package records
Install
Dune Dependency
Authors
Maintainers
Sources
sha256=d9ef00df7f87c20129f91ee9d5f3df1d4a9b0645a72a4c309962ecd346cee88f
md5=30e69590355367dc1dbc1c6cfde80b50
README.md.html
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.