arrows-0.4.4.1: Arrow classes and transformers

Portability | non-portable (multi-parameter type classes)
Stability | experimental
Maintainer | ross@soi.city.ac.uk
Safe Haskell | None

Control.Arrow.Transformer.Static

Description

Arrow transformer adding static information.

Synopsis

- newtype StaticArrow f a b c = StaticArrow (f (a b c))
- type StaticMonadArrow m = StaticArrow (WrappedMonad m)
- type StaticArrowArrow a s = StaticArrow (WrappedArrow a s)
- wrap :: (Applicative f, Arrow a) => f (a b c) -> StaticArrow f a b c
- unwrap :: (Applicative f, Arrow a) => StaticArrow f a b c -> f (a b c)
- wrapA :: (Arrow a, Arrow a') => a s (a' b c) -> StaticArrowArrow a s a' b c
- unwrapA :: (Arrow a, Arrow a') => StaticArrowArrow a s a' b c -> a s (a' b c)
- wrapM :: (Monad m, Arrow a) => m (a b c) -> StaticMonadArrow m a b c
- unwrapM :: (Monad m, Arrow a) => StaticMonadArrow m a b c -> m (a b c)

# Documentation

newtype StaticArrow f a b c Source

An arrow type that augments the underlying arrow with static information.

Constructors

StaticArrow (f (a b c)) |

Instances

(ArrowError ex a, Applicative f) => ArrowError ex (StaticArrow f a) |
(ArrowWriter w a, Applicative f) => ArrowWriter w (StaticArrow f a) |
(ArrowState s a, Applicative f) => ArrowState s (StaticArrow f a) |
(ArrowReader r a, Applicative f) => ArrowReader r (StaticArrow f a) |
(ArrowAddError ex a a', Applicative f) => ArrowAddError ex (StaticArrow f a) (StaticArrow f a') |
(ArrowAddWriter w a a', Applicative f) => ArrowAddWriter w (StaticArrow f a) (StaticArrow f a') |
(ArrowAddReader r a a', Applicative f) => ArrowAddReader r (StaticArrow f a) (StaticArrow f a') |
(ArrowAddState s a a', Applicative f) => ArrowAddState s (StaticArrow f a) (StaticArrow f a') |
(Arrow a, Applicative f) => ArrowTransformer (StaticArrow f) a |
(Arrow a, Applicative f) => Arrow (StaticArrow f a) |
(ArrowZero a, Applicative f) => ArrowZero (StaticArrow f a) |
(ArrowPlus a, Applicative f) => ArrowPlus (StaticArrow f a) |
(ArrowChoice a, Applicative f) => ArrowChoice (StaticArrow f a) |
(ArrowLoop a, Applicative f) => ArrowLoop (StaticArrow f a) |
(Category a, Applicative f) => Category (StaticArrow f a) |
(ArrowCircuit a, Applicative f) => ArrowCircuit (StaticArrow f a) |
(ArrowAddStream a a', Applicative f) => ArrowAddStream (StaticArrow f a) (StaticArrow f a') |
(Arrow a, Applicative f) => Functor (StaticArrow f a b) |
(Arrow a, Applicative f) => Applicative (StaticArrow f a b) |
(ArrowPlus a, Applicative f) => Alternative (StaticArrow f a b) |
(ArrowPlus a, Applicative f) => Monoid (StaticArrow f a b c) |

type StaticMonadArrow m = StaticArrow (WrappedMonad m)Source

A special case is monads applied to the whole arrow, in contrast to `Kleisli` arrows, in which the monad is applied to the output.

type StaticArrowArrow a s = StaticArrow (WrappedArrow a s)Source

A special case.

wrap :: (Applicative f, Arrow a) => f (a b c) -> StaticArrow f a b cSource

unwrap :: (Applicative f, Arrow a) => StaticArrow f a b c -> f (a b c)Source

wrapA :: (Arrow a, Arrow a') => a s (a' b c) -> StaticArrowArrow a s a' b cSource

unwrapA :: (Arrow a, Arrow a') => StaticArrowArrow a s a' b c -> a s (a' b c)Source

wrapM :: (Monad m, Arrow a) => m (a b c) -> StaticMonadArrow m a b cSource

unwrapM :: (Monad m, Arrow a) => StaticMonadArrow m a b c -> m (a b c)Source