packages feed

exference-1.6.0.0: environment/Applicative.hs

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)