minikanren相关内容

Prolog 和 miniKanren 在逻辑编程方面的主要技术区别是什么?

如今,当我想阅读逻辑编程时,我总是会偶然发现两种“主要"方法: miniKanren,The Reasoned Schemer 中引入的一种迷你语言由于 core.logic 而在当下流行. Prolog,第一个“大"逻辑编程语言. 我现在感兴趣的是:两者之间的主要技术差异是什么?它们在方法和实现上是否非常相似,或者它们采用完全不同的逻辑编程方法?它们来自数学的哪些分支,理论基础是什 ..
发布时间:2022-01-12 10:10:45 其他开发

mini-kanren cond-a cond-u 和 cond-e 有什么区别?

我尝试在 clojure 中使用 mini-kanren 的实现.但是一直在努力理解 cond-a cond-u 和 cond-e 之间的区别.我似乎对 cond-e 很清楚,但对 cond-a 和 cond-u 的理解却很糟糕. cond-e 设定一组目标,然后尝试每个目标……即尝试所有成功的分支. 相反,cond-a 和 cond-u 提交到第一个谓词成功的分支,并且 cond-a ..
发布时间:2022-01-02 23:21:56 其他开发

图 DB 与 Prolog(或 miniKanren)

最近我一直在研究像 Neo4j 这样的图形数据库以及 Prolog 和 miniKanren 中的逻辑编程.根据我到目前为止所学到的,既可以指定事实和它们之间的关系,也可以查询结果系统以获取某些选择.所以,实际上我看不出它们之间有多大区别,因为它们都可以用来构建图形和查询它,但使用不同的语法.但是,它们以完全不同的软件形式呈现. 除了技术上,数据库可能会提出一种时空效率更高的存储技术,除了像 ..
发布时间:2021-12-28 17:14:02 其他开发

miniKanren:如何定义#s 和#u?

在miniKanren中,succeed可以定义为(define success (== #t #t)),并且可以定义fail如(定义失败(=== #t #f)).但是 #s 和 #u 作为 succeed 和 fail 的简写形式呢,它们出现在 理性策划者? (define #s success) 在 Racket 中产生错误: 欢迎使用 Racket v7.2.>(需要球拍-miniK ..
发布时间:2021-07-02 18:53:58 其他开发

在实践中,非关系对core.logic意味着什么?

当试图通过API文档理解core.logic时,我遇到了非关系目标和关系目标.我不知道这在实践中意味着什么,为什么要注释目标(无论它们是否相关)为何很重要. 您能否举例说明目标的使用方式,取决于它们是否相关? 解决方案 为了解释什么是非关系型,我们需要重新研究relational的含义. 如果在函数式编程中考虑纯函数,则它们总是返回一个值,并且对于相同的输入参数,将返回相同的输 ..
发布时间:2020-07-24 09:43:36 其他开发

Racket博士对MiniKanren的支持

我从"The Reasoned Schemer-第二版"和DrRacket方案环境一书开始研究miniKanren. 我安装了"faster-minikanren"软件包,但是该书的第一个示例使用命令run*(例如,(run* q #f))会产生错误消息,例如run*: bad syntax in: (run* q #f). 这是否意味着"faster-minikanren"软件包没有 ..
发布时间:2020-07-24 09:43:32 其他开发

Prolog匹配vs miniKanren统一

在Prolog-人工智能编程中,Bratko在第58页上说了以下内容. "Prolog中的匹配对应于逻辑上的统一.但是,我们避免使用统一一词,因为出于效率原因,在大多数Prolog系统中,匹配的实现方式并不完全对应于统一.需要所谓的发生检查:给定变量是否在给定条件下出现?发生检查会使匹配效率低下." 我的问题是,miniKanren中的统一会遭受这种效率损失还是如何解决? 解决方 ..
发布时间:2020-07-24 09:43:30 其他开发

在逻辑编程中,无用的是什么?

问题 “理性计划者"描述了如何使用miniKanren,它类似于Prolog,但是是类似Lisp的语言的库.这本书的“第一条诫命"是这样的: 转换值为布尔值的函数 转化为以价值为目标的函数,替换cond 与conde和unsest每个问题和答案. 通过将#s替换为#s,取消对#t(或#f)答案的嵌套 (或#u). 除非通过几个大致等效的示例,否则它们实际上并没有定义嵌套.最清楚的 ..
发布时间:2020-06-29 21:06:20 其他开发

在逻辑编程方面,Prolog和miniKanren之间的主要技术区别是什么?

当我想学习逻辑编程时,时下我总是会遇到两种“主要"方法: miniKanren ,推理的计划者中引入的一种迷你语言.并由于 core.logic 而流行. Prolog ,第一种“大"逻辑编程语言. 我现在感兴趣的是:两者之间的主要技术区别是什么?它们在方法和实现上是否非常相似,还是对逻辑编程采用完全不同的方法?它们来自哪些数学分支,其理论基础是什么? 解决方案 首先,请允许 ..
发布时间:2020-06-29 21:05:56 其他开发

图形数据库与Prolog(或miniKanren)

最近,我一直在研究诸如Neo4j之类的图形数据库,以及Prolog和miniKanren中的逻辑编程.根据到目前为止的经验,既可以指定事实和它们之间的关系,也可以查询结果系统以进行一些选择.因此,实际上我看不出它们之间有什么太大的区别,因为它们都可以用于构建图形并对其进行查询,但是使用不同的语法.但是,它们以完全不同的软件形式呈现. 除了数据库可能会提出一种更具时空效率的存储技术的技术性,以 ..
发布时间:2020-05-16 23:46:24 其他开发

mini-kanren cond-a cond-u和cond-e之间有什么区别?

我试图在clojure中使用mini-kanren的实现。但一直在努力理解cond-a cond-u和cond-e之间的区别。我似乎很清楚cond-e,但对cond-a和cond-u的理解是安静的。 cond-e需要一组目标,然后尝试每个人...即尝试所有成功的分支。 cond-a和cond-u相反地提交到第一个谓词成功的分支,cond-a返回所有可能的成功的统一。而cond-u只返回 ..
发布时间:2016-11-27 20:36:26 其他开发语言