content: module Control.Applicative where
  
  
  
  class Data.Functor.Functor f => Applicative f where
    pure :: a -> f a
    (<*>) :: f (a->b) -> f a -> f b
  
  class Applicative f => Alternative f where
    -- empty :: f a
    (<|>) :: f a -> f a -> f a
    -- some :: f a -> f [a]
    -- many :: f a -> f [a] 
  
  liftA2 :: Applicative f => (a1 -> a2 -> r) -> f a1 -> f a2 -> f r
  liftA3 :: Applicative f => (a1 -> a2 -> a3 -> r) -> f a1 -> f a2 -> f a3 -> f r 
  
  instance Data.Monoid.Monoid a => Applicative ((,) a)
  instance Arrow a => Applicative (ArrowMonad a)
  instance Control.Monad.Monad m => Applicative (Control.Monad.WrappedMonad m)
  instance Data.Monoid.Monoid m => Applicative (Const m)
  instance Arrow a => Applicative (WrappedArrow a b)
  -- instance Typeable ((* -> *) -> Constraint) Applicative
  
  instance Alternative []
  instance ArrowPlus a => Alternative (ArrowMonad a)
  instance Control.Monad.MonadPlus m => Alternative (WrappedMonad m)
  -- instance Alternative f => Alternative (Alt * f)
  instance (ArrowZero a, ArrowPlus a) => Alternative (WrappedArrow a b)
  
  data ZipList a
  
  instance Data.Functor.Functor ZipList
  instance Control.Applicative.Applicative ZipList
  instance GHC.Generics.Generic1 ZipList
  instance Data.Eq.Eq a => Data.Eq.Eq (ZipList a)
  instance Data.Ord.Ord a => Data.Ord.Ord (ZipList a)
  instance Text.Read.Read a => Text.Read.Read (ZipList a)
  instance Text.Show.Show a => Text.Show.Show (ZipList a)
  instance GHC.Generics.Generic (ZipList a)
  