
24 Dec
2011
24 Dec
'11
12:53 p.m.
Because patterns are matched in order and the first one match is taken.
On 24 Dec 2011 17:49, "Mark Stoehr"
The standard Prelude implementation of 'last' is as follows \begin{code} last :: [a] -> a last [x] = x last (_:xs) = last xs last [] = error "Prelude.last: empty list" \end{code}
Isn't [x] equivalent to (x:[]) hence wouldn't [1] match both [x] and (_:xs)? If that's the case then we would have last [1] == 1 and last [1] == last []
but that doesn't happen. Why?
_______________________________________________ Beginners mailing list Beginners@haskell.org http://www.haskell.org/mailman/listinfo/beginners