Copyright | (c) Ross Paterson 2003 |
---|---|
License | BSD-style (see the LICENSE file in the distribution) |
Maintainer | R.Paterson@city.ac.uk |
Stability | experimental |
Portability | non-portable (multi-parameter type classes) |
Safe Haskell | Safe |
Language | Haskell98 |
Arrow transformer adding static information.
- 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.
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 c Source #
unwrap :: (Applicative f, Arrow a) => StaticArrow f a b c -> f (a b c) Source #