Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 12th, 2012  |  syntax: None  |  size: 0.47 KB  |  hits: 20  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. Relationship between Functor, Applicative Functor, and Monad
  2. Every Monad is an Applicative Functor
  3. Every Applicative Functor is a Functor
  4.        
  5. class Functor f => Applicative f where
  6.   pure  :: a -> f a
  7.   (<*>) :: f (a -> b) -> f a -> f b
  8.        
  9. class Monad m where
  10.   return :: a -> m a
  11.   (>>=)  :: m a -> (a -> m b) -> m b
  12.   (>>)   :: m a -> m b -> m b
  13.   m >> n = m >>= _ -> n
  14.   fail   :: String -> m a
  15.        
  16. class Applicative m => Monad' m where
  17.   (>>=) :: m a -> (a -> m b) -> m b