Proposal: Add strict iterate'

Jake McArthur jake.mcarthur at
Wed Jul 30 12:39:09 UTC 2014

+1 for adding a strict version of iterate. I have to roll my own all the
time. Regarding this particular implementation, I am neither for nor
against, because I haven't thought it through yet.
On Jul 29, 2014 8:48 PM, "David Feuer" <david.feuer at> wrote:

> I think most if not all applications of iterate would prefer to accumulate
> strictly—iterating a constant function is not very useful and the spine of
> the result of iterate is always the same. Unlike unfoldr, which has enough
> strictness built in to allow its caller to decide whether to accumulate
> strictly, iterate is entirely lazy. I therefore propose:
> iterate' :: (a -> a) -> a -> [a]
> iterate' f b = unfoldr go b
>   where
>     go x = x `seq` Just (x, f x)
> _______________________________________________
> Libraries mailing list
> Libraries at
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the Libraries mailing list