{-# LANGUAGE CPP, NoImplicitPrelude, UnicodeSyntax, TypeOperators #-}
module Control.Arrow.Unicode
( (⋙)
, (⋘)
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 608
, (⁂)
#endif
, (⧻)
, (⫴)
) where
import Control.Arrow ( Arrow, (***), ArrowChoice, (+++), (|||) )
import Data.Either ( Either )
#if (MIN_VERSION_base(3,0,3))
import Control.Category.Unicode ( (⋙), (⋘) )
#else
import Control.Arrow ( (>>>), (<<<) )
#endif
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 608
infixr 3 ⁂
#endif
infixr 2 ⧻
infixr 2 ⫴
#if ! (MIN_VERSION_base(3,0,3))
infixr 1 ⋙, ⋘
#endif
#if defined(__GLASGOW_HASKELL__) && __GLASGOW_HASKELL__ > 608
(⁂) ∷ Arrow a ⇒ a α β → a α' β' → a (α, α') (β, β')
(⁂) = (***)
{-# INLINE (⁂) #-}
#endif
(⧻) ∷ ArrowChoice a ⇒ a α β → a α' β' → a (Either α α') (Either β β')
(⧻) = (+++)
{-# INLINE (⧻) #-}
(⫴) ∷ ArrowChoice a ⇒ a α δ → a β δ → a (Either α β) δ
(⫴) = (|||)
{-# INLINE (⫴) #-}
#if ! (MIN_VERSION_base(3,0,3))
(⋙) ∷ Arrow a ⇒ a α β → a β γ → a α γ
(⋙) = (>>>)
{-# INLINE (⋙) #-}
(⋘) ∷ Arrow a ⇒ a β γ → a α β → a α γ
(⋘) = (<<<)
{-# INLINE (⋘) #-}
#endif