[Haskell-cafe] Newbie Monad question

Henning Thielemann lemming at henning-thielemann.de
Tue Jan 25 14:21:30 EST 2005

On Tue, 25 Jan 2005, [iso-8859-1] Simon Ulfsb=E4cker wrote:

> Hi,
> I'm a functional programming newbie trying to get the hang of the concept=
> Monads, but one thing about bind puzzles me. Let's take an IO Monad-examp=
> readLn >>=3D \i -> readLn >>=3D \j -> return (i + j)
> I fail to see how (\j -> return (i + j)) can know about the value of i.
> Isn't just the value of the previous readLn passed to \j -> return (i + j=

The expression means

readLn >>=3D (\i -> (readLn >>=3D (\j -> return (i + j))))

That is the first readLn is combined with the function
  (\i -> (readLn >>=3D (\j -> return (i + j))))
 which processes its input, in this case represented by the identifier i.

More information about the Haskell-Cafe mailing list