let type int_array = array of int var table := int_array[100] of 0 in ... end
int
and string
. They may be
redefined.
Type aliases do not build new types, hence they are equivalent.
let type a = int type b = int var a := 1 var b := 2 in a = b /* OK */ end
let type a = {a : int} var a := 0 function a (a : a) : a = a{a = a.a} in a (a{a = a}) end
But three name spaces is easier to implement than two.