[Haskell-cafe] >>= definition for list monad in ghc

Michael Vanier mvanier42 at gmail.com
Mon May 16 11:07:15 CEST 2011

Usually in monad tutorials, the >>= operator for the list monad is 
defined as:

m >>= k = concat (map k m)  -- or concatMap k m

but in the GHC sources it's defined as:

m  >>=  k  =  foldr  ((++)  .  k)  []  m

As far as I can tell, this definition is equivalent to the previous one (correct me if I'm wrong), so I was wondering why this definition was chosen instead of the other one.  Does anybody know?

Thanks in advance,


More information about the Haskell-Cafe mailing list