package OCanren-ppx

  1. Overview
  2. Docs
Implementation of miniKanren relational (logic) EDSL: PPX extensions

Install

Dune Dependency

Authors

Maintainers

Sources

0.3.0.tar.gz
sha256=eaf9624bbdbae8050eb43a48c0e79e97160b83b6f65a543ee1beca4c9f4ff4b2
sha512=e55dd7a3026b1dedcd37f55181059dfa44ad6976d241a1199246ee3c1684dcfdf1ae0c1da32165b5b2eb5748cfc57c906a0f0ebab56d03035a5bb87187a63cf7

Description

PPX rewriters for writing relational programs more conveniently.

  1. ppx_fresh -- a clone of original miniKanren syntax

fresh (x...) goal

expands into

Fresh.numeral (fun x ... -> goal)

  1. ppx_distrib for easier generation of type-safe smart constructors and reifiers...

[%%distrib type nonrec _ t = fully_abstract_type type ground = ... ]

  1. ppx_repr for testing. Expands REPR(expr) to (string_of_expr expr, expr)

Published: 03 May 2022

README

README.md

OCanren is a strongly-typed embedding of relational programming language miniKanren into OCaml. Nowadays, the implementation of OCanren strongly reminds faster-miniKanren. Previous implementation was based on microKanren with disequality constraints.

See installation instructions, API documentation for more details, and ReadTheDocs for detailed information.

Check our template repository for OCanren projects for faster startup!

Installation

OCanren is available in main OPAM repository

  opam install OCanren --yes

To try out developer version use

  opam pin add OCanren --dev-repo --yes

Dependencies (7)

  1. ppx_expect
  2. ppx_inline_test
  3. base < "v0.17"
  4. ppxlib >= "0.22"
  5. dune-configurator
  6. ocaml >= "4.10"
  7. dune >= "2.9"

Dev Dependencies (1)

  1. odoc with-doc

Used by (2)

  1. noCanren >= "0.3.0~alpha1"
  2. OCanren >= "0.3.0"

Conflicts

None

OCaml

Innovation. Community. Security.