trel icon indicating copy to clipboard operation
trel copied to clipboard

Relational programming for OCaml (unreleased)

Trel — Relational programming for OCaml

%%VERSION%%

Trel is a typed relational programming language embedded in OCaml. Its term language is arbitrarily extensible allowing clients to inject and project OCaml values and functions for seamless interaction between Trel and regular OCaml programs.

Trel is a typed and type-safe implementation of μKanren distributed under the ISC license. It depends on fmt.

Homepage: http://erratique.ch/software/trel

Minimal typed μKanren implementation

Consult mk.mli and mk.ml and its tests for an absolute minimal typed and type-safe μKanren in the spirit of the original one.

The implementation shows how to define an arbitrarily extensible typed term language and a simple API for typed reification of states. This is the core on which Trel adds a bit of convenience.

Other OCaml implementations of {mini,μ}Kanren are listed on the miniKanren website.

Installation

Trel can be installed with opam:

opam install trel

If you don't use opam consult the opam file for build instructions.

Documentation

The documentation and API reference is generated from the source interfaces. It can be consulted online or via odig doc trel.

Sample programs

If you installed Trel with opam sample programs are located in the directory opam var trel:doc.

In the distribution sample programs and tests are located in the test directory. They can be built and run with:

topkg build --tests true && topkg test