On Feb 17, 2006, at 3:30 PM, Ashley Yakeley wrote:
Andy Gill wrote:
I'd like to see a way of enforcing return strictness, that is
where you
have confidence that what a function is returning is fully evaluated.
Imagine a function hstrict;
hstrict :: a -> a
Is this like deepseq, that strictly evaluates internal structure
using seq?
yes. it is.
With hstrict you can write functions in the style.
fun f a b c = hstrict $ ....
where
...
...
But surely fun can return the unevaluated thunk (hstrict x)? Since
hstrict has not yet been called, it can't do its strictifying
magic, whatever that is.
No. hstrict will always be called before returning. Evaluation does
not return thunks, they get created by lets/where (at the core level),
not by function application/evaluation.
Andy Gill
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime