clolog 是将功能齐全的逻辑编程(又名“Prolog”)嵌入到 Clojure 中或从 Clojure 中调用,并支持对 Clojure 的调用。它具有以下特点和功能:
- 语法:基于 Clojure 的类似 Lisp 的语法,逻辑变量可包含在 Clojure 序列和向量中作为“复杂”项,支持 Clojure 调用谓词,如
truthy?
、evals-from?
、do
等,可访问逻辑变量绑定,有内置的谓词匹配、检查和操作,如same
、different
、var
、ground
等,支持嵌套的逻辑运算符and
、or
、not
、if
,“切”操作符first
,用户自定义谓词转换等。 - 查询和执行:通过匹配断言头与目标来进行搜索,从左到右处理查询中的每个目标,支持深度优先搜索,可获取和删除断言,提供
?
宏和query
函数进行查询,可通过绑定*leash*
进行追踪。 - 内置谓词:支持多种内置谓词,如
and
、or
、if
、not
、first
、same
、true
、false
、var
、ground
、truthy?
、evals-from?
、do
等。 - 特殊变换:提供
create-predicate-transforms
函数来创建特殊变换,每个变换是一个生产规则,执行机制是应用第一个匹配的变换,不可回溯。 - 潜在增强:可能在表达性、健壮性、效率等方面进行未来的增强,如处理非基础 Clojure 表达式、访问局部环境、支持 RDF 等、选择性追踪、更精确的追踪、错误检查、数据库集成、索引优化、并行和延迟等。
- 许可证:遵循 Eclipse Public License 2.0 及相关的 GNU 许可证。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。