package monadlib

  1. Overview
  2. Docs

Tagged logic trees which are simplified when combined. When the contents are interpreted as a bag conditional values, should be a monad.

We provide a separate applicative interface which is less strict than the derived definition for the monad. When we evaluate lift2 f t1 t2, the function f will be applied across all possible arguments from t1 and t2, after which, results will be discarded by simplification.

These results do not need to be computed if the tree simplification does not depend on the individual computations, as is the case with the applicative interface.

  • author Phil Scott
type ('tag, 'a) node =
  1. | Node of 'a * ('tag * ('tag, 'a) node) LazyList.t
module type Tree = sig ... end
module Make (Tag : sig ... end) : Tree with type tag = Tag.t and type 'a m = (Tag.t, 'a LazyList.t) node