package records
Install
Dune Dependency
Authors
Maintainers
Sources
md5=868f4724df008cc9f8302492446201ac
sha512=b8da2f37effab90c904dfa64b37d7537ee16bf88572e2dc81a67b4c5303a550cc78d2231ce690b42353771d9b6ff261b2019e5a6ed3da8949ab05fcf076bb904
Description
This library enables you to define and manipulate dynamic records in OCaml.
README
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.