"Neil Mitchell" <[EMAIL PROTECTED]> writes:
> I should have been more precise with my question. Given the code:
>
> fred = 2 + 2
>
> bob = fred + fred
>
> In a Haskell implementation fred would be evaluated once to 4, then
> used twice. The 2+2 would only happen once (ignore defaulting and
> overloaded numerics for now).
Not necessarily. The Haskell 98 standard very carefully
avoids mandating any particular evaluation strategy beyond
that it should be non-strict. So bob is always going to be
8, but just how it gets there is up to the implementation.
If you'd had
fred = [1..]
and
bob = do something with fred
a lot of other stuff
something else with fred
it's much less obvious that keeping the first-calculated
value for fred around the whole time is the right thing to
do.
> Do all Haskell compilers support the sharing.
I don't know all Haskell compilers, but I'm pretty sure
there have been implementations that don't, or don't always
because of the above problem.
--
Jón Fairbairn [EMAIL PROTECTED]
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe