/hvm-kanren

A µKanren implementation in HVM

Primary LanguageSchemeApache License 2.0Apache-2.0

!!EXPERIMENTAL!!


hvm-kanren

This is an experimental port of µKanren to HVM based on this paper.

The primary goal is to implement core constructs from µKanren in HVM with an eye towards exploring HVM strengths (linearity, optimal reduction, laziness and parallelism) to the extent possible.

These core constructs are:

  • equality constraints
  • disjunction of constraints
  • fresh variable generation
  • conjunction of constraints
  • bounded and unbounded recursion

// TODO Inline leaf contructors? E.g. Nil: could we consider Nil as normal form and clone statically? // Right now HVM creates a dup node that simply could be done statically? //

References