Skip to content

Traversable data structures with applicative functors

License

BSD-3-Clause, BSD-2-Clause licenses found

Licenses found

BSD-3-Clause
LICENSE
BSD-2-Clause
COPYING
Notifications You must be signed in to change notification settings

thierry-martinez/traverse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

traverse: Traversable data structures with applicative functors

This library provides:

  • a module signature Traverse.Applicative.S for applicative functors [McBride and Patterson, 2008],
  • two functions Traverse.list and Traverse.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 and List.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.

About

Traversable data structures with applicative functors

Resources

License

BSD-3-Clause, BSD-2-Clause licenses found

Licenses found

BSD-3-Clause
LICENSE
BSD-2-Clause
COPYING

Stars

Watchers

Forks

Packages

No packages published