Skip to content
/ dKanren Public

miniKanren variant with a functional syntax, expressing disjunction via pattern matching

License

Notifications You must be signed in to change notification settings

gregr/dKanren

Folders and files

NameName
Last commit message
Last commit date

Latest commit

2f05275 · Mar 28, 2020
Mar 1, 2017
Aug 1, 2017
Mar 28, 2020
Jun 21, 2017
Sep 21, 2017
Jun 17, 2017
Jun 16, 2017
Mar 1, 2017
Apr 8, 2017
Mar 1, 2017
Apr 8, 2017
Aug 15, 2017
Nov 30, 2017
Jul 13, 2017
Sep 8, 2017
Aug 16, 2017
Oct 17, 2017
Oct 17, 2017
Oct 17, 2017
Nov 30, 2017

Repository files navigation

dKanren

The purpose of dKanren is to support a model of programming that is as declarative as possible, and that can also be used for logical inference. The current version provides logic programming with symbolic constraints using a first order functional language syntax. Future versions will also provide access to lower level primitives and the scheduler for more direct control. The constraint system is designed to be extensible, to allow plugging in domain-specific solvers.

Constraint satisfaction

  • symbolic constraints
  • numeric constraints and solving
  • foundation based on lattices for extensibility
  • support for true negation and universal quantification

Scheduling

  • delayed goals and lazy constraints
  • eager following of deterministic paths
  • demand-based guess ordering

Functional logic programming

  • dk-evalo
  • implicit pattern negation

Caveat

This is still an early work in progress. For now, you'll probably be more interested in miniKanren and Barliman:

https://github.com/michaelballantyne/faster-miniKanren

https://github.com/webyrd/Barliman

About

miniKanren variant with a functional syntax, expressing disjunction via pattern matching

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published