bug in language definition (strictness)

Simon Marlow marlowsd at gmail.com
Thu Aug 6 08:59:53 EDT 2009


On 06/08/2009 13:49, Thomas Davie wrote:
>
> On 6 Aug 2009, at 14:37, Nils Anders Danielsson wrote:
>
>> On 2009-08-06 11:08, Malcolm Wallace wrote:
>>> yet, because of the definition of $!, this applies the constructor to
>>> its arguments right-to-left instead of the intuitive left-to-right.
>>
>> I do not think that there is a bug: x `seq` y `seq` e has the same
>> denotation as y `seq` x `seq` e.
>
> Not if one considers the "kind" of bottom one receives:
>
> undefined `seq` error "it exploded" `seq` e will print "Prelude.undefined"
> while
> error "it exploded" `seq` undefined `seq` e will print "Error: it exploded"

There's only one kind of bottom in Haskell 98.  And even with the 
imprecise exceptions extension, both expressions still have the same 
denotation - they denote the same set of exceptions, one of which is 
non-deterministically picked when the program is run.

Cheers,
	Simon


More information about the Haskell-prime mailing list