[Haskell-beginners] How to unnest "do"
Brent Yorgey
byorgey at seas.upenn.edu
Sun Jan 27 21:34:05 CET 2013
On Sun, Jan 27, 2013 at 09:29:27PM +0100, Emmanuel Touzery wrote:
> > stats :: String -> String
> > stats =
> > unwords .
> > sequence [show . length . words,
> > show . length . lines,
> > show . length]
> >
> >
> [..]
>
>
> > This improves the statistics code slightly, but uses some monadic
> > machinery you may not be familiar with. Another way to read the 'stats'
> > function is this:
> >
> > stats :: String -> String
> > stats str =
> > unwords [show . length . words $ str,
> > show . length . lines $ str,
> > show . length $ str]
> >
>
>
> I'm sorry, may I ask on which monad here is "sequence" operating?
>
> I can see that sequence here turns [a->a] into a->[a], I'm just not sure
> which is the monad at play here... I just need a little bit more
> explanation about this code before I get it.
It is the ((->) a) monad, also known as the reader monad.
-Brent
More information about the Beginners
mailing list