{-# LANGUAGE Safe #-} -- | -- -- Module : Control.Arrow -- Copyright : (c) Ross Paterson 2002 -- License : BSD-style (see the LICENSE file in the distribution) -- -- Maintainer : libraries@haskell.org -- Stability : provisional -- Portability : portable -- -- Basic arrow definitions, based on -- -- * /Generalising Monads to Arrows/, by John Hughes, -- /Science of Computer Programming/ 37, pp67-111, May 2000. -- -- plus a couple of definitions ('returnA' and 'loop') from -- -- * /A New Notation for Arrows/, by Ross Paterson, in /ICFP 2001/, -- Firenze, Italy, pp229-240. -- -- These papers and more information on arrows can be found at -- . module Control.Arrow (-- * Arrows Arrow(..), Kleisli(..), -- ** Derived combinators returnA, (^>>), (>>^), (>>>), (<<<), -- ** Right-to-left variants (<<^), (^<<), -- * Monoid operations ArrowZero(..), ArrowPlus(..), -- * Conditionals ArrowChoice(..), -- * Arrow application ArrowApply(..), ArrowMonad(..), leftApp, -- * Feedback ArrowLoop(..) ) where import GHC.Internal.Control.Arrow