diff --git a/Control/Monad/Indexed/Syntax.hs b/Control/Monad/Indexed/Syntax.hs new file mode 100644 index 0000000..c4dee30 --- /dev/null +++ b/Control/Monad/Indexed/Syntax.hs @@ -0,0 +1,20 @@ +module Control.Monad.Indexed.Syntax where + +import Control.Monad.Indexed + +import Prelude hiding ((=<<), (>>=), (>>)) + +(<$>) :: IxFunctor f => (a -> b) -> f j k a -> f j k b +(<$>) = imap + +(<*>) :: IxApplicative f => f i j (a -> b) -> f j k a -> f i k b +(<*>) = iap + +(=<<) :: IxMonad m => (a -> m j k b) -> m i j a -> m i k b +(=<<) = ibind + +(>>=) :: IxMonad m => m i j a -> (a -> m j k b) -> m i k b +(>>=) = flip (=<<) + +(>>) :: IxMonad m => m i j a -> m j k b -> m i k b +a >> b = a >>= const b diff --git a/indexed.cabal b/indexed.cabal index ee9df23..4271c22 100644 --- a/indexed.cabal +++ b/indexed.cabal @@ -24,8 +24,9 @@ source-repository head Library Exposed-modules: Data.Functor.Indexed, - Control.Monad.Indexed, + Control.Monad.Indexed, Control.Monad.Indexed.Fix, + Control.Monad.Indexed.Syntax, Control.Monad.Indexed.Trans Control.Comonad.Indexed default-language: Haskell98