[Haskell-cafe] Is unfoldr too strict?

Isaac Elliott isaace71295 at gmail.com
Tue Dec 11 06:55:07 UTC 2018

I was reading this article
https://wiki.haskell.org/Correctness_of_short_cut_fusion on the Haskell
wiki. It presents an example (2.1.2) where destroy/unfoldr fusion behaves
oddly. If I use a lazier definition of unfoldr, then this problem goes away:

unfoldr :: (b -> Maybe (a, b)) -> b -> [a]
> unfoldr f b =
>   case f b of
>     Nothing -> []
>     Just z -> fst z : unfoldr f (snd z)

Does this mean unfoldr is 'too strict'? Or is there a good reason for not
writing it this way (performance, perhaps?)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20181211/8ccd2fca/attachment.html>

More information about the Haskell-Cafe mailing list