package records
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=fc59cc20e054692ab2d18b89717968249adcc19f8a34da3e57bc828dad57b03d
md5=d67b3315208072bf9a3e99d834a1cbec
Description
This library enables you to define and manipulate dynamic records in OCaml.
README
README.md
Dynamic records
This library enables you to define and manipulate dynamic records in OCaml.
Example
Let us define a "point" record with three integer fields: x, y and z.
First, declare a new record layout.
module Point = (val Record.Safe.declare "point")
Second, define the fields. They have the type (int, Point.s) field
(Point.s
is a phantom type that guarantees type safety).
let x = Point.field "x" Record.Type.int
let y = Point.field "y" Record.Type.int
let z = Point.field "z" Record.Type.int
Third, "seal" this record structure. This prevents it from being further modified. Structures must be sealed before they can be used.
let () = Point.seal ()
At this point, you have a working record structure. The next step is to create actual records. They have the type Point.s Record.t
and are created using Point.make
. Initially their fields have no value.
let _ =
let p = Point.make () in
Record.set p x 3;
Record.set p y 4;
Record.set p z 5;
Record.format Format.std_formatter p
The last line outputs:
{"x":3,"y":4,"z":5}
Licensing
This library is available under the 2-clause BSD license. See COPYING
for more information.