package records

  1. Overview
  2. Docs

Description

This library enables you to define and manipulate dynamic records in OCaml.

Tags

org:cryptosense

Published: 03 Jan 2017

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.

Dependencies (5)

  1. topkg build
  2. result
  3. yojson < "2.0.0"
  4. ocamlfind build
  5. ocaml >= "4.02.0"

Dev Dependencies (1)

  1. ounit with-test

Used by (1)

  1. pkcs11 < "0.7.0"

Conflicts

None