records

Records
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.

Install
Published
03 Jan 2017
Sources
records-0.8.0.tbz
md5=d67b3315208072bf9a3e99d834a1cbec
Dependencies
topkg
build
yojson
< "2.0.0"
ounit
with-test
ocaml
>= "4.02.0"
Reverse Dependencies
pkcs11
< "0.7.0"