Poly/ML seems to be a little inconsistent about when it uses type names supplied by the user to abbreviate types as shown in the following transcript:
type COMPLEX = {re : real, im : real};
type COMPLEX = {im: real, re: real}
val unity : COMPLEX = {re = 1.0, im = 0.0};
val unity = {im = 0.0, re = 1.0}: COMPLEX
fun negate ({re, im} : COMPLEX) : COMPLEX = {re = ~re, im = ~im};
val negate = fn: COMPLEX -> {im: real, re: real}
Regards,
Rob.