Atul9 / canrun_rs

A Rust logic programming library inspired by the *Kanren family of language DSLs.

Home Page:https://docs.rs/crate/canrun

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Canrun is a logic programming library inspired by the *Kanren family of language DSLs.

Status: Exploratory and Highly Experimental

I'm still quite new to both Rust and logic programming, so there are likely to be rough edges. At best it may be a useful implementation of something that resembles the core concepts of a Kanren while being idiomatically Rusty. At worst it may just be a poor misinterpretation with fatal flaws.

Quick Start

use canrun::{Goal, both, unify, var};
use canrun::example::I32;

let x = var();
let y = var();
let goal: Goal<I32> = both(unify(x, y), unify(1, x));
let result: Vec<_> = goal.query(y).collect();
assert_eq!(result, vec![1])

About

A Rust logic programming library inspired by the *Kanren family of language DSLs.

https://docs.rs/crate/canrun

License:Apache License 2.0


Languages

Language:Rust 99.8%Language:Shell 0.2%