Indexed_comonad.Via
module Core : Preface_specs.Indexed_comonad.CORE
module Operation :
Preface_specs.Indexed_comonad.OPERATION
with type ('a, 'index) t = ('a, 'index) Core.t
module Infix :
Preface_specs.Indexed_comonad.INFIX
with type ('a, 'index) t = ('a, 'index) Core.t
module Syntax :
Preface_specs.Indexed_comonad.SYNTAX
with type ('a, 'index) t = ('a, 'index) Core.t
type ('a, 'index) t = ('a, 'index) Core.t
The type held by the Indexed Comonad
.
val extract : ('a, 'index) t -> 'a
Extract a 'a
from t
. Dual of return.
val compose_left_to_right :
(('a, 'index) t -> 'b) ->
(('b, 'index) t -> 'c) ->
('a, 'index) t ->
'c
Composing monadic functions using Co-Kleisli Arrow (from left to right).
Lift a binary function that acts on arbitrary values into a function that acts t
values.
val lift3 :
('a -> 'b -> 'c -> 'd) ->
('a, 'index) t ->
('b, 'index) t ->
('c, 'index) t ->
('d, 'index) t
Lift a ternary function that acts on arbitrary values into a function that acts t
values.
val compose_right_to_left :
(('b, 'index) t -> 'c) ->
(('a, 'index) t -> 'b) ->
('a, 'index) t ->
'c
Composing co-monadic functions using Co-Kleisli Arrow (from right to left).
Create a new t
, replacing all values of the given functor by given a value of 'a
.
Create a new t
, replacing all values in the given functor by unit
.
module Infix :
Preface_specs.Indexed_comonad.INFIX
with type ('a, 'index) t := ('a, 'index) t
Infix flipped version of CORE
.extend.
Infix version of CORE
.compose_left_to_right.
Infix version of OPERATION
.compose_right_to_left.
Applicative functor of ('a -> 'b) t
over ('a, 'index) t
to ('b, 'index) t
.
Applicative functor of ('a -> 'b) t
over ('a, 'index) t
to ('b, 'index) t
.
Discard the value of the first argument.
Discard the value of the second argument.
Infix version of CORE
.map.
Flipped and infix version of CORE
.map.
Flipped and infix version of OPERATION
.replace.
module Syntax :
Preface_specs.Indexed_comonad.SYNTAX
with type ('a, 'index) t := ('a, 'index) t
Syntactic shortcuts for version of CORE
.extend:
let@ x = e in f
is equals to extend f e
.
include Preface_specs.Indexed_functor.SYNTAX
with type ('a, 'index) t := ('a, 'index) t