[Haskell] strictness of putChar: report incomplete?
simonmar at microsoft.com
Wed Oct 5 11:01:09 EDT 2005
On 05 October 2005 15:46, Ross Paterson wrote:
> On Wed, Oct 05, 2005 at 03:22:29PM +0100, Simon Marlow wrote:
>> Also, GHC's optimiser currently treats (_|_ :: IO a) and (do _|_;
>> return ()) as interchangeable, which is naughty, and people have
>> occasionally noticed, but the benefits can sometimes be huge.
> What's wrong with identifying them? You're not expecting the monad
> laws to hold, are you?
No, of course I don't expect the monad laws to hold :)
But the intended meaning of
(do _|_; return () :: IO ()) `seq` True
is True, not _|_, right? This isn't made explicit in the report, but
it's how we all understand the IO monad to work, and perhaps derives
from the well-known implementation of (IO a) as (World -> (a,World)).
More information about the Haskell