{-# OPTIONS_GHC -fno-warn-unused-do-bind #-}

-- | This module exists only because parsec 2 doesn't have an
--   'Applicative' instance, and in general because it's annoying to add
--   'Applicative' to all the constraints.
module Applicative where

import Control.Monad

(<$>)  :: Monad m => (a -> b) -> m a -> m b
(<$>)  = liftM

(<*>)  :: Monad m => m (a -> b) -> m a -> m b
(<*>)  = ap

(*>)   :: Monad m => m a -> m b -> m b
(*>)   = (>>)

(<*)   :: Monad m => m a -> m b -> m a
m <* n = do x <- m; n; return x