Hello,
val length : ('a1, 'b) l -> int = <fun>
Why do we get 'a1, and not 'a, in the type?
Well, probably, since 'a is instantiated to int during
type checking, it may be the case that 'a, as type name, is
still marked as taken during the type output, so we get ('a1,'b)
The type is perfectly sound... it is just 'surprising' for
a regular user... do you think this should be considered a bug?