> From: Jules Bean <ju...@jellybean.co.uk> > wren ng thornton wrote: >> The type of head should not be [a] -> a + Error, it should be (a:[a]) -> >> a. With the latter type the compiler can ensure the precondition will be >> proved before calling head, thus eliminating erroneous calls. > > Yes, but you know and I know that's not haskell. > > I'm talking about haskell. > > In haskell - a language which does not fully support dependent types - > head is both necessary and useful. >
I could follow the rest of this, but I don't understand why 'head' is necessary. Couldn't you always replace it with a case statement, with undefined on [] if necessary? I won't deny that it's extremely useful, though! John Lato _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe