deeqSeq proposal

Simon Marlow simonmar at microsoft.com
Thu Apr 6 04:18:45 EDT 2006


On 05 April 2006 21:02, Ben Rudiak-Gould wrote:

> Andy Gill wrote:
>> - [various reasons for deepSeq]
> 
> You left out the one that most interests me: ensuring that there are
> no exceptions hiding inside a data structure.
> 
>> deepSeq :: a -> b -> b
> 
> This ties demand for the (fully evaluated) normal form of an
> expression to demand for the WHNF of a different expression, which is
> a bit weird. I think it's cleaner for the primitive to be your
> "strict", which ties demand for the normal form of an expression to
> demand for the WHNF of the same expression. In fact I'd argue that
> "deepSeq" should not be provided at all (though of course it can be
> defined by the user). The analogy with seq is a bit
> misleading---deepSeq is a lot less symmetric than seq. The
> expressions (x `deepSeq` y `deepSeq` z) and (strict x `seq` strict y
> `seq` z) are equivalent, but only the latter makes it clear that z
> doesn't get fully evaluated. 

Agreed - that pinpoints something that seemed a little strange to me
too.  strict should be the primitive; or maybe strict renamed to
deepSeq.

Cheers,
	Simon


More information about the Haskell-prime mailing list