Page
Library
Module
Module type
Parameter
Class
Class type
Source
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.
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 field.Field.name
to Field.name 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.with fields
on private
types to not expose mutators or creators.