Safe Haskell | None |
---|
Control.Arrow.Mix.Category
- type Along f input output i o = f (i, input) (o, output)
- type :~> f g = forall i o. f i o -> g i o
- type :~~> f g = forall i o. (i -> o) -> f i o -> g i o
- class AlMonad m where
- (~>>=) :: (AlMonad m, Arrow b, Arrow c) => m b i1 o1 -> (Along b i1 o1 :~> Along (m c) i2 o2) -> m c i2 o2
- class AlFunctor f where
- type OhNo a b = b
- newtype (f :$~ a) input output = Apply {}
Documentation
type Along f input output i o = f (i, input) (o, output)Source
Sometimes we need to refine our morphism a bit; therefore, we use Along f i o
instead of just f
.
Something like a monad - but for arrows
(~>>=) :: (AlMonad m, Arrow b, Arrow c) => m b i1 o1 -> (Along b i1 o1 :~> Along (m c) i2 o2) -> m c i2 o2Source
Most of time we don't need refined morphisms. That's why we would want a simpler combinator.
Something like a functor - again, for arrows