traverse
This library provides:
a module signature
Traverse.Applicative.S
for applicative functors
[McBride and Patterson, 2008],two functions
Traverse.list
andTraverse.seq
to traverse lists
and sequences by a given applicative functor and with a given arity,many instances of applicative functors:
Traverse.Applicative.{iter, map, reduce, env, fold, pair, forall, exists, option, result, list}
.
The purpose of this library is to provide a common dictionary of
"visitors", which is orthogonal to the visited data structure. For
instance, Traverse.list Traverse.Applicative.iter (S O)
is
equivalent to List.iter
, Traverse.list Traverse.Applicative.map (S (S O))
is equivalent to List.map2
, etc. Moreover, one can get a
visitor which combine, for instance, both List.map
andList.fold_left
by invoking Traverse.list Traverse.Applicative.(pair map fold)
. To get the same visitors for a sequence ('a Seq.t
), one
just have to replace Traverse.list
by Traverse.seq
, and it is easy
to define a traversal for any algebraic data structures.
sha512=a29798bf912dc2c2ddce06aafc63f88fce4bf5dd35884c2e2c7b7caa1b2d8e95122e6f6d3b675965145853f530fad856740201f2f349561a15e78591a56e10fe
with-doc & >= "1.5.1"
>= "0.3.0"
>= "0.3.0"
>= "14"
>= "1.11.0"
>= "4.03.0"
>= "0.25"
>= "0.3.0"