A collection of OCaml utilities used by the JHU PL lab


This package provides the following libraries (via dune):



  • Jhupllib
  • Jhupllib_eager_nondeterminism This 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_logger_utils
  • Jhupllib_monad_utils A module containing a utility functor for monads.
  • Jhupllib_multimap
  • Jhupllib_multimap_pp
  • Jhupllib_multimap_to_yojson
  • Jhupllib_nondeterminism This module contains a non-determinism monad.
  • Jhupllib_pp_utils
  • Jhupllib_string_utils
  • Jhupllib_uids A module defining a generative functor which creates UID modules.
  • Jhupllib_utils
  • Jhupllib_witness_protection This 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_utils This module contains utility functions for writing Yojson codec generators.

Dependencies: batteries, monadlib, yojson, ppx_deriving.runtime, ppx_deriving_yojson.runtime