A collection of OCaml utilities used by the JHU PL lab
IN THIS PACKAGE
This package provides the following libraries (via dune):
Jhupllib_eager_nondeterminismThis module contains a simple definition of an eager nondeterminism monad. This monad is eager in that it uses non-lazy structures (e.g. list) rather than lazy structures (e.g. lazy_list). While lazy structures are useful both to reduce memory copying and avoid unnecessary computation in the event that the results are not fully consumed, eager structures require less complex internal representations.
Jhupllib_monad_utilsA module containing a utility functor for monads.
Jhupllib_nondeterminismThis module contains a non-determinism monad.
Jhupllib_uidsA module defining a generative functor which creates UID modules.
Jhupllib_witness_protectionThis module provides a means by which a registry of "witnesses" can be created. Here, a witness is a representative of another (typically more complex) value. A witness registry is a mutable structure which monotonically accumulates values, mapping distinct values to distinct witnesses. The primary use of such a registry is to accelerate comparison operations. For instance, using witnesses as keys in a tree-based dictionary may be faster than using the original values if the comparison between two values is an expensive operation.
Jhupllib_yojson_utilsThis module contains utility functions for writing Yojson codec generators.
Dependencies: batteries, monadlib, yojson, ppx_deriving.runtime, ppx_deriving_yojson.runtime