Collecting values from Functors?

Ralf Hinze ralf@informatik.uni-bonn.de
Fri, 6 Jun 2003 20:52:57 +0200


> class FunctorM t where
>      fmapM  :: Monad m => (a -> m b) -> (t a -> m (t b))
>      fmapM_ :: Monad m => (a -> m b) -> (t a -> m ())
>      fmapM_ f t = fmapM f t >> return ()

The `fmapM' function is also known as a monadic map. It can be
defined in a generic way for every Haskell data type. It's in
the library of Generic Haskell (called mapMl):

	http://www.cs.uu.nl/research/projects/generic-haskell/

As an aside, gmap and friends won't fit the bill, as they work
on types rather than functors.

Cheers, Ralf