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中使用
145KB
3K SLoC
Canrun是一个受逻辑编程启发的库,它受到*Kanren系列语言DSL的启发。
- 介绍博客:https://esimmler.com/announcing-canrun/
- 如何工作(第1部分):https://esimmler.com/building-canrun-part-1/
状态:探索性和高度实验性
我对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