On Mon, Apr 20, 2009 at 2:54 PM, Peter Verswyvelen <bugf...@gmail.com>wrote:

> I find this very confusing. Is the documentation of seq wrong (should be
> weak head normal form)?
>

Yes.  Weak head normal form is really the only *essential* one.  The popular
runtimes do not know how to reduce under a lambda, so they can't reduce
something to hnf.


> Anyway, so I guess we would actually need a function:
>
> iswhnf  :: a -> IO Bool
>
> But since the value of this iswhnf function depends on when it is called,
> I feel it has to be in the IO monad; actually multiple threads evaluating it
> have nothing to do with it?
>

This is an impure function for a few reasons.  I.e. not only does it give
different answers at different times (depending on evaluation order), but it
is not pure in the domain theory; i.e. (\x. x) 42 = 42, but iswhnf gives
different answers for these.

So yes, definitely in IO, as a runtime extension (I wouldn't even expect
this function to be implementable on all runtimes).

Luke
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to