On Tue, Jul 14, 2009 at 6:02 PM, Thomas Hartman<tphya...@gmail.com> wrote:
> myiterate f x =
>  let nxt = f x
>  in nxt `seq` x : myiterate f nxt

iterate' f x = x `seq` x : iterate' f (f x)
seems better; it doesn't evaluate list elements you don't visit.

> let test = 1 : 2 : 3 : undefined in last $ take 4 $ myiterate (test !!) 0
*** Exception: Prelude.undefined

> let test = 1 : 2 : 3 : undefined in last $ take 4 $ iterate' (test!!) 0
3

  -- ryan
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to