[Haskell-beginners] Prelude Implementation of Last overlapping patterns?
Tom Murphy
amindfv at gmail.com
Sun Dec 25 02:16:14 CET 2011
On Dec 24, 2011 12:53 PM, "Benjamin Edwards" <edwards.benj at gmail.com> wrote:
>
> Because patterns are matched in order and the first one match is taken.
>
This is very expressive. For example, you can write
f 0 = 0
f x = 1 / x
> 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
>
>
> _______________________________________________
> 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/3a06dd8e/attachment.htm>
More information about the Beginners
mailing list