Tuple2.On_monad
On_monad
implements bi-traversal operators for a given monad M
.
Currently, this is no different to On(Monad_exts.App(M))
; this may change in the future.
include Travesty.Bi_traversable_types.Basic_generic_on_applicative
with type ('l, 'r) t := ('l, 'r) t
with type 'l left := 'l
with type 'r right := 'r
with module M := Travesty.Monad_exts.App(M)
include Travesty.Generic_types.Bi_generic
with type ('l, 'r) t := ('l, 'r) t
with type 'l left := 'l
with type 'r right := 'r
val bi_map_m :
('l1, 'r1) t ->
left:('l1 -> 'l2 Travesty.Monad_exts.App(M).t) ->
right:('r1 -> 'r2 Travesty.Monad_exts.App(M).t) ->
('l2, 'r2) t Travesty.Monad_exts.App(M).t
bi_map_m c ~left ~right
traverses with left
over every 'l1 left
, and right
over every 'r1 right
, in c
.
val map_left_m :
('l1, 'r) t ->
f:('l1 -> 'l2 Travesty.Monad_exts.App(M).t) ->
('l2, 'r) t Travesty.Monad_exts.App(M).t
map_left_m c ~f
monadically traverses over the left type of c
only, using f
.
val map_right_m :
('l, 'r1) t ->
f:('r1 -> 'r2 Travesty.Monad_exts.App(M).t) ->
('l, 'r2) t Travesty.Monad_exts.App(M).t
map_right_m c ~f
monadically traverses f
over the right type of c
only, using f
.