This library enables you to define and manipulate dynamic records in OCaml.
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:
This library is available under the 2-clause BSD license.
COPYING for more information.