问题标签 [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.

0 投票
2 回答
126 浏览

clojure - 使用宏生成 core.logic 语句

我正在尝试通过“填空”动态构建 core.logic 语句。这是一个简单的例子:

但是我得到一个clojure.lang.Compiler$CompilerException: java.lang.RuntimeException: No such var: user/q, compiling:(null:20:12).

我已经尝试了引用、取消引用和取消引用拼接的所有组合,但我无法弄清楚。我应该如何插入q

(而且,退后一步,建立这样的陈述是正确的方式吗?)

0 投票
1 回答
233 浏览

clojure - 使用 clojure 的 core.logic / minikanren 查找相似的集合

这是我关于 Stack Overflow 的第一个问题。

我是逻辑编程的新手,正在尝试评估它是否可以用来解决我正在处理的一些匹配问题。

问题:

假设我们有一个看起来像这样的集合 A。

然后我们还有一些看起来像这样的其他集合。

我要解决的问题是,

“找到与我们所知的其他集合相比,与集合 A 共享最多成员的集合。”

这种情况下的答案应该是集合 D,因为它与集合 A 共享三个成员。与仅与 A 共享两个和一个成员的其他集合相比。

问题一:

逻辑编程能解决这类问题吗?

问题2:

如果可以,您将如何在例如 Clojure 的 core.logic 中做到这一点?

0 投票
1 回答
358 浏览

clojure - 带有 ClojureScript 的 core.logic CLP(FD)

我试图用来core.logic找出以下等式的答案:

WV都是给定的,而xy是我要计算的值。

我试过这样的方法(我W用 60 和V10 代替):

但它会返回(["10<lvar:y_6>" NaN])(我希望是 35 和 25)。

我该如何处理?我不想使用clojure.core.logic.fd,因为我正在使用 ClojureScript - 这可能吗?有可能fd吗?


请注意,这些等式只是一个示例。在我的真实场景中,我想解决更多类似的问题:

现在我简化了那些以获得最基本的示例运行,但也欢迎上述解决方案:)

0 投票
1 回答
133 浏览

clojure - 为什么会返回这个矛盾的 clojure.core.logic/featurec 结果?

...我该如何避免呢?

返回

我理解这意味着_0地图必须至少包含:a 1键值对和:a 2键值对。这似乎是矛盾的,因为:a不能同时映射到两者12除非我们使用 MultiMaps。我不能把它读成:a 1OR :a 2,因为我指定的约束是一个连词。我原以为结果应该是()因为约束是矛盾的;没有任何价值q可以满足这些约束。

我一定是读错了结果。

0 投票
2 回答
705 浏览

prolog - Prolog 匹配 vs miniKanren 统一

在 Prolog - 人工智能编程中,Bratko 在第 58 页说了以下内容。

“Prolog 中的匹配对应于所谓的逻辑统一。但是,我们避免使用统一这个词,因为在大多数 Prolog 系统中出于效率原因,匹配的实现方式并不完全对应于统一。正确的统一需要这样-称为发生检查:给定变量是否出现在给定术语中?发生检查会使匹配效率低下。

我的问题是 miniKanren 中的统一是否会遭受这种效率损失,或者这个问题是如何解决的?

0 投票
1 回答
187 浏览

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

当试图通过 API 文档理解 core.logic 时,我遇到了非关系目标和关系目标。我不知道这在实践中意味着什么,以及为什么注释目标是否是相关的很重要。

您能否举例说明如何根据目标是否相关来以不同方式使用目标?

0 投票
1 回答
114 浏览

clojure - 如何在 Push、Clojush、Clojure 中实现任何基因蚂蚁寻找食物?

我正在尝试使用 Push、Clojush、Clojure 来实现蚂蚁在 2d 地图中寻找食物,但我不确定如何表示地图?有人可以给我一个例子吗?谢谢你。

0 投票
1 回答
120 浏览

clojure - 如何从 Clojure core.logic 中的 [[:a :A] [:b :B] [:c :C]] 中删除 [:b (lvar)]?

我想[:b :B][[:a :A] [:b :B] [:c :C]]以下示例代码中删除,如果我替换:B(lvar),它不再起作用:

这些工作:

这些不(注意lvar):

0 投票
1 回答
136 浏览

clojure - Clojure core.logic 找到满足所有谓词的所有成员?

我在 Clojure 中有以下代码(使用 core.logic):

我想要的是找到所有孩子都上同一所学校的所有父母。所以,在上面的列表中,我的预期回报是('Bernard),因为他的两个女儿去“school2”,每个其他父母至少有一个孩子不会去其他人的同一所学校。

这对 core.logic 可行吗?如果是这样,我该怎么做?

0 投票
1 回答
127 浏览

clojure - 使用 core.logic 做一个简单的匹配函数

假设我们matches通过下表定义一个关系:

这意味着(在伪代码中)

在 core.logic 中,我想我会知道如何制作可以近似于以下行为的个性化函数matches

...等等对于matches-Bmatches-C

问题:我如何概括,即,如上所述matches-A的单个函数?matches特别是,我有兴趣制作它,以便您可以运行类似(matches "not A"),(matches "B and C")(matches "C or D")(在伪代码中)的查询来分别获得类似(A D),(A)和的结果(A B)。这可能吗?

注意:我使用的是 clojurescript 而不是 clojure。我不确定这是否会影响答案。