问题标签 [clojure-core.logic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
clojure - 表示 X 的特定子集在 core.logic 中具有属性 Y
我想要:
- 描述关于一类对象的子集的事实。
- 声明一个对象具有一个由其他属性组成的属性。
以以下为例:
我想表达一类鸟,红色和机器人的鸟,有一个属性。这个特性是它们仅由按钮、奶酪和电线组成。线奶酪或纽扣的类型没有限制。同样因此,应该可以推断出没有由纸组成的红色机器鸟。此外,这些鸟可以由项目按钮、奶酪和电线的子集组成。
在 clojure/core.logic.prelude 中,有使用defrel
and的关系和事实fact
。但是,我想不出一个组合来解释这个事实。
clojure - 为什么 run* 不适用于 core.logic 中的自然数?
我正在GitHub 上玩 core.logic 的 Peano 算术应用程序。当我尝试
Clojure 吐出一个错误,但是,
(_.0)
按预期成功。这里有一些实现细节吗?
编辑:
我正在运行以下代码:
堆栈跟踪是:
项目.clj
clojure - 如何在 core.logic 中模拟“外部连接”?
我刚刚开始使用 core.logic,为了解决这个问题,我正在尝试实现一些简单的东西,类似于我目前正在专业处理的问题。然而,问题的一部分让我难住了......
作为我的示例的简化,如果我有一个项目目录,其中一些仅在某些国家/地区可用,而有些在特定国家/地区不可用。我希望能够指定项目列表和例外情况,例如:
如果可能的话,我宁愿不为所有国家/地区指定允许进入,因为有限制的项目集相对较小,我希望能够进行一次更改以允许/排除给定项目的项目国家。
如何编写一个规则,给出一个国家/地区的项目/颜色列表,并具有以下约束:
- 该项目必须在项目列表中
- 国家/项目不得在“不允许进入”列表中
- 任何一个:
- 该项目的限制列表中没有国家
- 国家/项目对在限制列表中
有没有办法做到这一点?我是否以完全错误的方式思考事情?
clojure - 使用 core.logic 查询家谱时消除重复结果
我正在用 core.logic 建模一个家谱。我想run*
查询并让他们返回所有结果而不重复。将所有defn
替换def tabled
为我所期望的结果(至少现在是这样),我知道这一点condu
并且onceo
可以减少结果的数量,但我不确定其中任何一个是否是消除重复项的最佳方法。
我特别担心我目前的方法,因为声明关系和函数似乎是重复的工作。我知道我的一些关系是“相互递归的”(mothero
并且相互womano
引用),但我这样做是因为将来我可能会添加一个新的(defrel mother*)
,这应该可以推断出母亲既是父母又是女人。
clojure - Core.logic的简明解释
我想使用 Clojure 的 Core.logic。但是,我也想了解它是如何工作的。在某处是否有简明的解释?(比如实现一个元循环评估器?)
谢谢!
clojure - 匹配列表
我想知道是否可以使用 matche 之类的东西与 core.logic 中的列表进行模式匹配
与向量类似
效果很好,但我不知道如何匹配列表 (foo :u 2) 而不是向量。原因是我想使用 core.logic 分析 clojure 程序。
clojure - mini-Kanren,core.logic,clojure:推理方案练习60
这不是家庭作业——解决方案已经在文本中。我只是无法理解解决方案。
问题
正确的解决方案
我相信的解决方案
我的困惑
显然“a (== true q)”行没有被执行,因为只有 b 是目标。这让我很困惑。到目前为止,我的逻辑编程心智模型是:
- 考虑对 q 的所有可能分配
输出设法通过整个程序的那些
因此,“a (== true q)”强制 q = true,这使得不可能满足“b (== false q)”行。
然而,显然只执行“计算目标所需的事情”。这是怎么回事?core.logic / mini-kanren 的正确心理执行模型是什么?
谢谢
(顺便说一句,我显然错了,因为 mini-karen + core.logic 彼此一致——我只是想了解我做错了什么。)
clojure - Clojure、core.logic、mini-kanren、Reasoned Schemer
代码
结果
问题:
为什么?这是怎么回事?run* 和宏之间是否有一些奇怪的交互?
谢谢!
clojure - Clojure、core.logic、mini-kanren:eqo vs ==
我知道:https ://github.com/clojure/core.logic/wiki/Differences-from-The-Reasoned-Schemer
语境
迷你看人代码:
核心逻辑代码
这会产生结果 (),这是正确的答案。
问题:
eqo 和 == 是一样的,还是我在上面的例子中只是幸运?谢谢!
clojure - Clojure,core.logic:列表
根据https://github.com/clojure/core.logic/wiki/Differences-from-The-Reasoned-Schemer core.logic 支持 listo。
但是,以下代码无法编译
它抱怨:
异常:java.lang.RuntimeException:无法解析符号:此上下文中的 listo,正在编译:(test/chap03.clj:8)
问题:发生了什么事,我如何获得 listo?