Superficially, I find the syntax very untuitive to read. Most languages opt to use <> for typevariables. Is there a specific reason you chose to deviate from that and use []?

I actually can't think of any functional languages that use < > for type variables (I'm sure there's one or two, but it can't be common)

Depends on what you mean by functional language. I was considering main-stream languages that support some form of functional programming. So Rust, F#, C#, Kotlin, Swift, Typescript, etc

F# does, I think

I'm not sure most languages get a vote here.

They can't even represent Fuse's Functor example, i.e.

  f: A -> B, x: F[A]
so maybe they don't get any points for syntax.

This is only true for C-style languages? Flix uses square brackets, as does Effekt, and Nim, as well as Python. Probably many more I'm missing. Gleam even uses normal parens.