
On Sat, Jan 21, 2012 at 1:45 PM, David Barbour
On Sat, Jan 21, 2012 at 10:08 AM, Roman Cheplyaka
wrote: * David Barbour
[2012-01-21 10:01:00-0800] As noted, IO is not strict in the value x, only in the operation that generates x. However, should you desire strictness in a generic way, it would be trivial to model a transformer monad to provide it.
Again, that wouldn't be a monad transformer, strictly speaking, because "monads" it produces violate the left identity law.
It meets the left identity law in the same sense as the Eval monad from Control.Strategies. http://hackage.haskell.org/packages/archive/parallel/3.1.0.1/doc/html/src/Co...
The Eval monad has the property: return undefined >>= const e = e.
From what I can tell, your proposed monads do not.
--
Dave Menendez