[Haskell-beginners] Prelude Implementation of Last overlapping patterns?

Benjamin Edwards edwards.benj at gmail.com
Sat Dec 24 18:53:14 CET 2011


Because patterns are matched in order and the first one match is taken.
On 24 Dec 2011 17:49, "Mark Stoehr" <stoehr at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/beginners/attachments/20111224/aeaf3f39/attachment.htm>


More information about the Beginners mailing list