#逻辑编程 #逻辑 #DSL #kanren #编程语言

canrun

受*Kanren系列语言DSL启发的逻辑编程库

5个版本 (重大变更)

0.5.0 2023年5月31日
0.4.0 2023年1月2日
0.3.0 2021年8月3日
0.2.0 2020年7月3日
0.1.0 2020年7月3日

数学分类中排名第699

每月下载量45
2 crates中使用

MIT/Apache

145KB
3K SLoC

CI Coverage Crate Documentation

Canrun是一个受逻辑编程启发的库,它受到*Kanren系列语言DSL的启发。

状态:探索性和高度实验性

我对Rust和逻辑编程都相当新手,所以可能存在一些粗糙的边缘。最好情况下,它可能是一个类似于Kanren核心概念的实用实现,同时具有Rust风格的语法。最坏的情况下,它可能只是对有致命缺陷的糟糕误解。

快速入门

use canrun::{LVar, Query};
use canrun::goals::{both, unify};

let x = LVar::new();
let y = LVar::new();
let goal = both(unify(x, y), unify(1, x));

let result: Vec<_> = goal.query(y).collect();

assert_eq!(result, vec![1])

依赖关系

~1.5MB
~33K SLoC