[MLton] A little exercise for the type checker:
Stephen Weeks
MLton@mlton.org
Thu, 12 Feb 2004 14:25:28 -0800
> fun pair x y = fn z => z x y;
> fun run z =
> let val x1 = fn y => pair y y in
> let val x2 = fn y => x1(x1(y)) in
> let val x3 = fn y => x2(x2(y)) in
> let val x4 = fn y => x3(x3(y)) in
> x4(z)
> end
> end
> end
> end
>
> annah$ mlton -show-basis true test.sml | wc -l
> 327
>
> Scary!
Not to worry. The pretty-printed type for "run" is large, but
internally we use unification and hash consing, so the internal
representation is small.