bug in language definition (strictness)

Ross Paterson ross at soi.city.ac.uk
Thu Aug 6 11:00:39 EDT 2009


On Thu, Aug 06, 2009 at 03:33:40PM +0100, Malcolm Wallace wrote:
> >What semantics would you like Haskell to have, in which (x `seq` y
> >`seq` e) and (y `seq` x `seq` e) are not equal?
> 
> I can easily imagine that (x `seq` y `seq` e) might have *two*
> semantic denotations:  bottom (Exception: stack overflow), and e.
> And I would like to be able to choose which one I get (please).
> This is the declared purpose of seq, namely "to improve performance
> by avoiding unneeded laziness".

There is no stack overflow in the denotational semantics.  Either you
would get an answer with a bigger stack (and that's the denotation),
or you wouldn't (in which case the value is bottom).  As Simon said,
the denotational semantics of seq is very limited for specifying
performance.


More information about the Haskell-prime mailing list