[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.