Andres Loeh wrote: >> >I cannot see how an empty list of tyvars is useful or desirable in >> >practice: >> > data Foo = Foo (forall . Int) >> >is equivalent to just >> > data Foo = Foo Int >> >so why bother to permit the former? It probably indicates some error in >> >the thinking of the programmer, so the compiler should bring it to her >> >attention. > > The only reasons that I could see in favor of allowing empty "forall"s > is that it might be easier to automatically generate code. Haskell > seems to be a bit inconsistent in how it treats empty constructs. For > example, empty let and empty where seems to be allowed, but not an > empty case?
Just a little remark on the side: 'If' and 'case' demand exactly one expression. In such cases allowing zero expressions is not a generalization but an unnecessary complication. 'Let' and 'where' allow any number of bindings, so allowing zero bindings (instead of demanding at least one) is a simplification. Upshot: everywhere the syntax allows a 'list' of things, one should consider allowing the empty list, too. Cheers Ben _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime