[MLton-user] 2006 ICFP Programming Contest
Matthew Fluet
fluet@cs.cornell.edu
Tue, 4 Jul 2006 11:13:28 -0400 (EDT)
>> The reason why this all stuck around in my mind is because on that day I
>> recall mulling over this experience in the context of the whole strong
>> typing / dynamic typing debate.
>
> My intuition, having used Scheme, Haskell and SML extensively, is that
> static typing is definitely the way to go (for me). The functions that
> are impossible to write in a statically typed (Hindley-Milner)
> language are simply not worth having.
>
> Also, I do not feel that the added expressibility of rank2-poly which
> Haskell has is needed.
I don't entirely agree that more expressive type systems are not needed.
I do agree that those functions expressible in a Hindley-Milner typed
language comprise the lion's share of interesting functions.
I think that the right way to approach this tension is to have a language
that makes it easy to write HM functions (e.g., type inference), while
making it just a little bit more verbose to write the more intricately
typed functions (e.g., polymorphic recursion, rank-N polymorphism, etc.)
I'm not saying that there isn't any place for type inference at this more
interesting level, but rather that _some_ syntactic marker is used to
remind the programmer that they should be thinking a little more
carefully.