Stephanie Weirich wrote:
I don't think we want to allow types like:
forall . Int or forall a b. Int
These types are mostly bugs. Furthermore, rejecting them doesn't limit
expressiveness: they should both be "equivalent" to Int, so user could
just write Int. I can't really think how allowing these types extends
the expressiveness of the language, nor can I imagine a situation
where someone would prefer seeing one of these types instead of Int.
If you restrict yourself to programs entirely written by humans, I agree
completely. But if you consider programs written by programs (say
Template Haskell to be specific, but it could be via many other means),
such degenerate types occur rather often. Haskell does have 'const' at
the value-level, and it is very useful. And so is 'const' at the
type-level, especially for code generators.
If there were a standard library of type-simplifiers, that could
preprocess "forall a b. Int" to "Int", I again would be fine with only
allowing Int.
Jacques
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime