-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/


-- | Extra functions for Control.Arrow
--   
--   Extra functions for Control.Arrow
@package arrow-extras
@version 0.1.0.1

module Control.Arrow.Extras

-- | Feed the output of second arrow into the output of the first arrow.
--   Can be used to emulate Applicative <a>*</a> like usage:
--   
--   <pre>
--   foo :: Appplicative f =&gt; f a -&gt; f b -&gt; f (a, b)
--   (,) <a>$</a> a <a>*</a> b
--   </pre>
--   
--   The arrow version is:
--   
--   <pre>
--   foo :: Arrow p =&gt; p x a -&gt; p x b -&gt; p x (a, b)
--   arr (const (,)) &gt;*&gt; a &gt;*&gt; b
--   </pre>
(>*>) :: Arrow p => p a (b -> c) -> p a b -> p a c
infixl 0 >*>

-- | precomposition with a pure value
(<<$) :: Arrow a => a c d -> c -> a x d
infixr 1 <<$

-- | postcomposition with a pure value
(>>$) :: Arrow a => a b c -> d -> a b d
infixr 1 >>$

-- | postcomposition with a pure value (right-to-left variant)
($<<) :: Arrow a => d -> a b c -> a b d
infixr 1 $<<

-- | precomposition with a pure value (right-to-left variant)
($>>) :: Arrow a => c -> a c d -> a x d
infixr 1 $>>
