Legend:
Library
Module
Module type
Parameter
Class
Class type
module type S_non_monadic = sig ... end

S_non_monadic contains the core operations of a zipper, without any parametrisation over a particular failure monad.

module type S_monadic = sig ... end

S_monadic contains the core operations of a zipper, parametrised over a particular failure monad.

module type S = sig ... end

S contains S_non_monadic; a functor for generating S_monadic over a custom monad; and specialisations of it over common monads.

type ('mark, 'a, 'acc, 'final) fold_outcome = [
  1. | `Stop of 'final
    (*

    Stop folding, immediately return

    *)
  2. | `Drop of 'acc
    (*

    Drop the cursor and continue

    *)
  3. | `Swap of 'a * 'acc
    (*

    Replace cursor with a new value

    *)
  4. | `Mark of 'mark * 'a * 'acc
    (*

    Replace, and mark, the cursor

    *)
]

The type of instructions returned by functions used with fold_until_m and fold_until.

module type S_marked_non_monadic = sig ... end

S_marked_non_monadic extends S_non_monadic to add functions for manipulating marks.

module type S_marked_monadic = sig ... end

S_marked_monadic extends S_monadic to add functions for manipulating marks.

module type S_marked = sig ... end

S_marked extends S to add functions for manipulating marks.

module type Basic_mark = sig ... end

Basic_mark is the interface that mark types must implement.