GitHub - bobschrag/clolog:功能齐全的逻辑编程(又名“Prolog”)嵌入在 Clojure 中/可从 Clojure 调用并支持对 Clojure 的调用。秉承 LogLisp、Lisp Machine Prolog 和 Fran

clolog 是将功能齐全的逻辑编程(又名“Prolog”)嵌入到 Clojure 中或从 Clojure 中调用,并支持对 Clojure 的调用。它具有以下特点和功能:

  • 语法:基于 Clojure 的类似 Lisp 的语法,逻辑变量可包含在 Clojure 序列和向量中作为“复杂”项,支持 Clojure 调用谓词,如truthy?evals-from?do等,可访问逻辑变量绑定,有内置的谓词匹配、检查和操作,如samedifferentvarground等,支持嵌套的逻辑运算符andornotif,“切”操作符first,用户自定义谓词转换等。
  • 查询和执行:通过匹配断言头与目标来进行搜索,从左到右处理查询中的每个目标,支持深度优先搜索,可获取和删除断言,提供?宏和query函数进行查询,可通过绑定*leash*进行追踪。
  • 内置谓词:支持多种内置谓词,如andorifnotfirstsametruefalsevargroundtruthy?evals-from?do等。
  • 特殊变换:提供create-predicate-transforms函数来创建特殊变换,每个变换是一个生产规则,执行机制是应用第一个匹配的变换,不可回溯。
  • 潜在增强:可能在表达性、健壮性、效率等方面进行未来的增强,如处理非基础 Clojure 表达式、访问局部环境、支持 RDF 等、选择性追踪、更精确的追踪、错误检查、数据库集成、索引优化、并行和延迟等。
  • 许可证:遵循 Eclipse Public License 2.0 及相关的 GNU 许可证。
阅读 29
0 条评论