package records

  1. Overview
  2. Docs
Dynamic records

Install

Dune Dependency

Authors

Maintainers

Sources

1.0.0.tar.gz
md5=868f4724df008cc9f8302492446201ac
sha512=b8da2f37effab90c904dfa64b37d7537ee16bf88572e2dc81a67b4c5303a550cc78d2231ce690b42353771d9b6ff261b2019e5a6ed3da8949ab05fcf076bb904

Description

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

Tags

org:cryptosense

Published: 01 May 2023

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.

Dependencies (3)

  1. yojson >= "1.6.0"
  2. ocaml >= "4.08.0"
  3. dune >= "2.0"

Dev Dependencies (1)

  1. ounit with-test & >= "2.0.0"

Used by (1)

  1. pkcs11 < "0.7.0"

Conflicts

None