"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
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to