Duncan Coutts wrote:
On Fri, 2008-11-21 at 10:53 +0000, Simon Marlow wrote:

The docs probably shouldn't say anything about what the compiler sees, it should stick to what the programmer sees. Duncan - do you want to try rewording it?

Hmm, though the difference is really in what transformations you want
the compiler not to do. I would not say the operational behaviour is
actually different. Used in isolation there's really no way to
distinguish them, even using trace and other tricks to observe the
evaluation order.

Yes, to be more precise, the difference is in what *guarantees* you get about operational behaviour. You might be able to observe a difference with trace, or you might not, depending on what the compiler did. Using trace you will always observe pseq's first argument evaluated before its second, that's not true of seq.

I guess we can try to simplify it to something like "evaluation happens
here" (pseq) vs "evaluation happens here or before" (seq).

Ok, but we need to be careful: it would be wrong to talk about ordering at all with respect to seq, since it tells you nothing about ordering. The implementation might be using a non-lazy evaluation strategy, for example.

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to