{-# LANGUAGE CPP #-}
#if __GLASGOW_HASKELL__ >= 702 && __GLASGOW_HASKELL <= 706 && defined(MIN_VERSION_comonad) && !(MIN_VERSION_comonad(3,0,3))
{-# LANGUAGE Trustworthy #-}
#endif
#if __GLASGOW_HASKELL__ >= 708 && __GLASGOW_HASKELL__ < 710
{-# OPTIONS_GHC -fno-warn-amp #-}
#endif
module Data.Functor.Bind (
Functor(..)
, (<$>)
, ( $>)
, Apply(..)
, (<..>)
, liftF3
, WrappedApplicative(..)
, MaybeApply(..)
, Bind(..)
, (-<<)
, (-<-)
, (->-)
, apDefault
, returning
) where
import Data.Functor.Apply
import Data.Functor.Bind.Class
infixr 1 -<<, -<-, ->-
(-<<) :: Bind m => (a -> m b) -> m a -> m b
(-<<) = flip (>>-)
(->-) :: Bind m => (a -> m b) -> (b -> m c) -> a -> m c
f ->- g = \a -> f a >>- g
(-<-) :: Bind m => (b -> m c) -> (a -> m b) -> a -> m c
g -<- f = \a -> f a >>- g