{-# LANGUAGE NoImplicitPrelude, UnicodeSyntax #-}
module Control.Monad.Unicode ( (≫=), (≫), (=≪), (↣), (↢) ) where
import Control.Monad ( Monad, (>>=), (>>), (=<<), (>=>), (<=<) )
infixl 1 ≫=
infixl 1 ≫
infixr 1 =≪
infixl 1 ↣
infixr 1 ↢
(≫=) ∷ Monad m ⇒ m α → (α → m β) → m β
≫= :: m α -> (α -> m β) -> m β
(≫=) = m α -> (α -> m β) -> m β
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
(>>=)
{-# INLINE (≫=) #-}
(≫) ∷ Monad m ⇒ m α → m β → m β
≫ :: m α -> m β -> m β
(≫) = m α -> m β -> m β
forall (m :: * -> *) a b. Monad m => m a -> m b -> m b
(>>)
{-# INLINE (≫) #-}
(=≪) ∷ Monad m ⇒ (α → m β) → m α → m β
=≪ :: (α -> m β) -> m α -> m β
(=≪) = (α -> m β) -> m α -> m β
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
(=<<)
{-# INLINE (=≪) #-}
(↣) ∷ Monad μ ⇒ (α → μ β) → (β → μ γ) → α → μ γ
↣ :: (α -> μ β) -> (β -> μ γ) -> α -> μ γ
(↣) = (α -> μ β) -> (β -> μ γ) -> α -> μ γ
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
(>=>)
{-# INLINE (↣) #-}
(↢) ∷ Monad μ ⇒ (β → μ γ) → (α → μ β) → α → μ γ
↢ :: (β -> μ γ) -> (α -> μ β) -> α -> μ γ
(↢) = (β -> μ γ) -> (α -> μ β) -> α -> μ γ
forall (m :: * -> *) b c a.
Monad m =>
(b -> m c) -> (a -> m b) -> a -> m c
(<=<)
{-# INLINE (↢) #-}