On 22 June 2004 15:59, Malcolm Wallace wrote:

> "Simon Marlow" <[EMAIL PROTECTED]> writes:
> 
>> Nope.  You can't return something without evaluating it to head
>> normal form in Haskell.  Every value that is "returned" is a value,
>> never a thunk.  If you want to return something unevaluated, you
>> have to wrap it in a constructor.
> 
> Actually, there are two possible strategies for who evaluates a thunk
> to head normal form.  The caller or the callee.  GHC says that the
> callee always evaluates to HNF before returning the value.  But the
> language does not force this implementation choice.  It is equally
> possible for an implementation of the function to return a thunk and
> for the caller to evaluate it if necessary.  Both strategies give the
> same result semantically, since if the value in question is demanded,
> it gets evaluated.

If a function is called, then the result has been demanded.  There are
no situations in which a function has been called but the caller will
accept a thunk as the result without further evaluating it.

So what is the advantage of returning a possibly-unevaluated result?
The caller will definitely have to evaluate it, so every eval will need
to loop until the value is in HNF.

And what about updates?

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

Reply via email to