As others have pointed out, there are many allowed evaluation orders of this expressions.
But not only that, how it gets evaluated depends on how you are going to use it.  Say that you print it, then you need all 4 elements, but say that it's oly going to be used as an argument to null, then you will evaluate less (probably).

Even so, it's instructive to study how the normal order reduction of this expression would proceed under the assumption that all 4 elements will be used.

  -- Lennart

On Fri, May 9, 2008 at 6:52 PM, PR Stanley <prstanley@ntlworld.com> wrote:
Hi
 (take 4 . map (>0)) (f s t)
 where
       s = 2 : t
       t = 3 : s
 f = zipWith (-)
What would be the order of evaluation for the above code? How would I illustrate the evaluation step-by-step?
I'm guessing that  the code necessitates lazy evaluation and as such it starts with take then it applies f which in turn applies s and t and zipWith until the first element satisfies the predicate in map and This is repeated 4 times
What does the list think?
Many thanks,
Paul
P.S. I'm not done with induction. I'm just letting it rst for a bit.

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