[Haskell-cafe] Why isn't pattern matching lazy by default?
Peter Verswyvelen
bf3 at telenet.be
Wed Sep 19 07:34:27 EDT 2007
Mmm, yes of course... blush...
But shouldn't
f ~(x:xs) = rhs
give a compile-time error since neither x nor xs is used in the right
hand side, and hence nothing will ever get pattern matched when this
function is called, which clearly indicates a mistake? That is, if I
understand lazy pattern matching correctly... And then in these cases
the user would have to annotate the pattern match as being strict, so he
is aware of the eager evaluation taking place
Oh well, the way it is now is also easy to get used to, one just has to
know how it works (just like M-theory ;-) )
Cheers,
Peter
Neil Mitchell wrote:
> Hi
>
>
>>> Now why isn't pattern matching lazy by default? This seems odd for a
>>> newbie since everything else is lazy by default.
>>>
>
> f ~(x:xs) = rhs
> f ~[] = rhs'
>
> Now guess what f [] does...
>
> If you use a where binding then pattern matching is lazy.
>
> Thanks
>
> Neil
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20070919/bd98944d/attachment.htm
More information about the Haskell-Cafe
mailing list