In compatibility.go, you'll see syntax in comments that describe typing properties.
A => Bmeans type A is assignable to B.- Uppercase letters are type variables.
A => Arefers to the same type on both sides. - Lowercase letters are variables (not types). Types can be assigned to them using the syntax
a: T, meaning variable a has type T. - Klar type syntax is also used, so
[A]is a list, andA | Bis a union type. if,andandorare also used.A => B | C if A => B or A => Cmeans type A is compatible with the union of B and C, if A is assignable to either B or C.A =!> Bmeans type A is not assignable to B.A = Bmeans type A is equal to B (similar meaning for!=).A <=> Bmeans type A is assignable to B and vice versa.