package travesty

  1. Overview
  2. Docs
Traversable containers, monad extensions, and more

Install

Dune Dependency

Authors

Maintainers

Sources

travesty-0.7.2.tbz
sha256=49d43ea0e9cef32d493fcc1561fc7480c55d9a2490700e487f4d5c3aff562d61
sha512=1cd77071adfb4583d0fcd27469b97bc64b7278761949aaaf415768aec14f6a1243e14575155c75033a5141a0320b4f56687381dc2bc56432a5ea63ea8613d968

doc/travesty.containers/Travesty_containers/Zipper/index.html

Module Travesty_containers.ZipperSource

Zipper implements the 'list zipper' data structure.

A list zipper contains two lists: a 'right list', which represents a sequence of data to be processed; and a 'left list', which collects the sequence of data already processed in reverse order. At any point, the first element in the right list---the 'cursor'---represents the item currently being processed.

The usual use case of a zipper is to 'slide' across the right list, moving elements onto the left list one by one, and then 'rewind' the left list back onto the right for further processing.

These versions of the list zipper contains a few extensions. First, many operations can be parametrised by a monad---this will usually be an error monad like Or_error, but can be anything else (like a state transformer).

Second, items in zippers constructed using Make_marked can be marked, attaching a tag to them; later on, if the item still exists in the zipper, the zipper can be rewound back to the mark using recall.

Signatures

For input and output signatures for this module's functors, see Zipper_types.

Plain zippers

Plain is a basic list zipper, without specialised functionality.

Marked zippers

Make_marked makes a marked zipper from a Basic_mark.

Int_mark_zipper is a marked zipper whose marks are integers.

OCaml

Innovation. Community. Security.