Idris2Doc : Control.Arrow

Control.Arrow

Definitions

`interface Arrow : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: Category arr
Methods:
`arrow : (a -> b) -> arr a b`
`  Converts a function from input to output into a arrow computation.`
`first : arr a b -> arr (a, c) (b, c)`
`  Converts an arrow from `a` to `b` into an arrow on pairs, that applies  its argument to the first component and leaves the second component  untouched, thus saving its value across a computation.`
`second : arr a b -> arr (c, a) (c, b)`
`  Converts an arrow from `a` to `b` into an arrow on pairs, that applies  its argument to the second component and leaves the first component  untouched, thus saving its value across a computation.`
`(***) : arr a b -> arr a' b' -> arr (a, a') (b, b')`
`  A combinator which processes both components of a pair.`

Fixity Declaration: infixr operator, level 3
`(&&&) : arr a b -> arr a b' -> arr a (b, b')`
`  A combinator which builds a pair from the results of two arrows.`

Fixity Declaration: infixr operator, level 3

Implementations:
`Arrow Morphism`
`Monad m => Arrow (Kleislimorphism m)`
`arrow : Arrow arr => (a -> b) -> arr a b`
`  Converts a function from input to output into a arrow computation.`

Visibility: public export
`first : Arrow arr => arr a b -> arr (a, c) (b, c)`
`  Converts an arrow from `a` to `b` into an arrow on pairs, that applies  its argument to the first component and leaves the second component  untouched, thus saving its value across a computation.`

Visibility: public export
`second : Arrow arr => arr a b -> arr (c, a) (c, b)`
`  Converts an arrow from `a` to `b` into an arrow on pairs, that applies  its argument to the second component and leaves the first component  untouched, thus saving its value across a computation.`

Visibility: public export
`(***) : Arrow arr => arr a b -> arr a' b' -> arr (a, a') (b, b')`
`  A combinator which processes both components of a pair.`

Visibility: public export
Fixity Declaration: infixr operator, level 3
`(&&&) : Arrow arr => arr a b -> arr a b' -> arr a (b, b')`
`  A combinator which builds a pair from the results of two arrows.`

Visibility: public export
Fixity Declaration: infixr operator, level 3
`interface ArrowZero : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: Arrow arr
Methods:
`zeroArrow : arr a b`

Implementation:
`ArrowPlus arr -> ArrowZero arr`
`zeroArrow : ArrowZero arr => arr a b`
Visibility: public export
`interface ArrowPlus : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: ArrowZero arr
Methods:
`(<++>) : arr a b -> arr a b -> arr a b`
Fixity Declaration: infixr operator, level 5
`(<++>) : ArrowPlus arr => arr a b -> arr a b -> arr a b`
Visibility: public export
Fixity Declaration: infixr operator, level 5
`interface ArrowChoice : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: Arrow arr
Methods:
`left : arr a b -> arr (Either a c) (Either b c)`
`right : arr a b -> arr (Either c a) (Either c b)`
`(+++) : arr a b -> arr c d -> arr (Either a c) (Either b d)`
Fixity Declaration: infixr operator, level 2
`(\|/) : arr a b -> arr c b -> arr (Either a c) b`
Fixity Declaration: infixr operator, level 2

Implementation:
`Monad m => ArrowChoice (Kleislimorphism m)`
`left : ArrowChoice arr => arr a b -> arr (Either a c) (Either b c)`
Visibility: public export
`right : ArrowChoice arr => arr a b -> arr (Either c a) (Either c b)`
Visibility: public export
`(+++) : ArrowChoice arr => arr a b -> arr c d -> arr (Either a c) (Either b d)`
Visibility: public export
Fixity Declaration: infixr operator, level 2
`(\|/) : ArrowChoice arr => arr a b -> arr c b -> arr (Either a c) b`
Visibility: public export
Fixity Declaration: infixr operator, level 2
`interface ArrowApply : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: Arrow arr
Methods:
`app : arr (arr a b, a) b`

Implementation:
`Monad m => ArrowApply (Kleislimorphism m)`
`app : ArrowApply arr => arr (arr a b, a) b`
Visibility: public export
`data ArrowMonad : (Type -> Type -> Type) -> Type -> Type`
Totality: total
Visibility: public export
Constructor:
`MkArrowMonad : arr (the Type ()) a -> ArrowMonad arr a`

Hints:
`Arrow a => Applicative (ArrowMonad a)`
`Arrow a => Functor (ArrowMonad a)`
`ArrowApply a => Monad (ArrowMonad a)`
`runArrowMonad : ArrowMonad arr a -> arr (the Type ()) a`
Visibility: public export
`interface ArrowLoop : (Type -> Type -> Type) -> Type`
Parameters: arr
Constraints: Arrow arr
Methods:
`loop : arr (a, c) (b, c) -> arr a b`
`loop : ArrowLoop arr => arr (a, c) (b, c) -> arr a b`
Visibility: public export
`liftA2 : Arrow arr => (a -> b -> c) -> arr d a -> arr d b -> arr d c`
`  Applying a binary operator to the results of two arrow computations.`

Visibility: public export