[Haskell-cafe] Order of Evaluation

Lennart Augustsson lennart at augustsson.net
Fri May 9 17:55:25 EDT 2008


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 at 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 at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20080509/c59dfdfd/attachment.htm


More information about the Haskell-Cafe mailing list