[Haskell-beginners] a problem with maps

Brent Yorgey byorgey at seas.upenn.edu
Mon Jul 25 18:26:51 CEST 2011


On Sun, Jul 24, 2011 at 04:44:55PM +0100, Julian Porter wrote:
> Well, speaking of rigour, I don't think applicative functors, etc are actually the right approach.  Using the list monad gives a much clearer idea of what's going on, plus it's massively generalisable.  
> 
> See
> http://jpembeddedsolutions.wordpress.com/2011/07/24/combining-haskell-lists-with-monads/
> for a description.

I don't see why this implies that "applicative functors are not the
right approach".  In fact,

  pairThem :: Monad m => a -> m b -> m (a,b)
  pairThem x ys = liftM2 (,) (return x) ys

can be made *more generic* (which you yourself state is the main goal)
as follows:

  pairThem :: Applicative m => a -> m b -> m (a,b)
  pairThem x ys = liftA2 (,) (pure x) ys

Since every monad is also an applicative functor, this definition
allows pairThem to be used with strictly more types.

-Brent



More information about the Beginners mailing list