
27 Mar
2009
27 Mar
'09
5:28 p.m.
From: Jules Bean
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