package fieldslib

  1. Overview
  2. Docs
Syntax extension to define first class values representing record fields, to get and set record fields, iterate and fold over all fields of a record and create new record values


Dune Dependency






  • Added Fields.Direct.set_all_mutable_fields, a function intended to guarantee when pooling records that one cannot forget to reinitialize some fields.

    Obviously one could achieve this through something like Fields.Direct.iter, but we want a more efficient version that doesn't force the call side to create closures.


  • Made with fields generate the same functions in the Fields and Fields_of_* modules whether the type is called t or not.


  • Made with fields expose first-class fields for private types while preserving privacy.

    There is now an additional phantom type in a first-class field that prevents building or modifying elements of a private type.

    One consequence of this change is that the Field.t type is now an abstract type -- it used to be exposed as a record type. So, one must, e.g., change to field.


  • Added back Fields.fold to with fields for private types.

    We had removed Fields.fold for private types, but this caused some pain. So we're putting it back. At some point, we'll patch with fields to prevent setting mutable fields on private types via the fields provided by fold.


  • with fields, for a type u that isn't named t, creates module Fields_of_u rather than module Fields. This allows one to us with fields on several types in the same structure.


  • Changed with fields on private types to not expose mutators or creators.


Innovation. Community. Security.