module Applicative ( -- * Applicative Applicative(..) , between , filterM , forever , liftA3 , replicateM , replicateM_ , unless , when , zipWithM , zipWithM_ -- * Alternative , Alternative((<|>), empty, many) , endBy , endBy1 , guard , manyTill , optional , sepBy , sepEndBy , sepBy1 , sepEndBy1 , skipMany , skipManyTill , skipSome , skipSomeTill , some1 , someTill -- ** Newtypes , Alt(..) -- * Free applicative , Ap(..) , runAp , runAp_ , liftAp , iterAp , hoistAp , retractAp ) where import Control.Applicative (Alternative(empty, many, (<|>)), Applicative(liftA2, pure, (*>), (<*), (<*>), (<*>)), liftA3) import Control.Applicative.Combinators (between, endBy, manyTill, sepBy, sepEndBy, skipMany, skipManyTill, skipSome, skipSomeTill) import Control.Applicative.Combinators.NonEmpty (endBy1, sepBy1, sepEndBy1, someTill) import Control.Applicative.Free (Ap(Ap, Pure), hoistAp, iterAp, liftAp, retractAp, runAp, runAp_) import Control.Monad (filterM, forever, guard, replicateM, replicateM_, unless, when, zipWithM, zipWithM_) import Data.Functor.Alt (optional) import Data.List.NonEmpty (some1) import Data.Monoid (Alt(Alt, getAlt))