> The first definition is just a complicated way to write the second one.
Huh. Looks like you're right: proc test(T: typedesc): proc(x: T) = (proc(x: T) = echo x) test(string)("foo") Never occurred to me that you can use it this way. > I find consistency far more important (Haskell changed my mind quite a bit). Then you should be disturbed by the fact that Haskell's type system corresponds to an inconsistent logic. ;^)