Because patterns are matched in order and the first one match is taken.

On 24 Dec 2011 17:49, "Mark Stoehr" <stoehr@cs.uchicago.edu> wrote:
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