Before somebody noticed: I'm wrong.
It's not List monad, but also a "(->) x" monad, also defined in
Control.Monad.
Therefore, "return y" is just "const y". Therefore,
x >>= (return y) = x >>= (const y) = x >> y
On 16 Apr 2008, at 17:04, Miguel Mitrofanov wrote:
It has nothing to do with State; it actually works in List monad.
"return y" is just another way of writing "[y]".
You don't need to import Control.Monad.State for this to work; you
only need Control.Monad (which is imported by the former).
On 16 Apr 2008, at 16:56, Hans Aberg wrote:
When I load the State module in Hugs, then I can define the
function f below, but I do not immediately see exactly what
function "return" returns. Explanation welcome.
For example:
> f [2..4] [6..9]
[6,7,8,9,6,7,8,9,6,7,8,9]
That is, it just repeats the second argument as many times as the
length of the second argument.
Hans Aberg
--------
import Control.Monad.State
f :: Monad a => a b -> a c -> a c
f x y = x >>= (return y)
--------
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe