问题标签 [minikanren]
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 - 使用 core.logic 列出唯一的 DAG 父级
这是一个(希望如此)简单的逻辑程序,我已经坚持了一段时间。
我有一个由 core.logic 中的边关系表示的 DAG,在生成父节点列表时,当我在图中有“菱形”时会得到重复(我不是在谈论循环)。
在这种情况下,有什么方法可以生成不同的父母列表(通过重写 parento 或类似方法)?
我想得到 (:b :c :a) 并且我想在 run* 语句中执行它(即将结果包装在一个集合中不是我的目标)。
此外,将“^:tabled”添加到 parento 似乎可以解决问题,但我不想要 tabled 引入的记忆。
clojure - 为什么 core.logic 的输出重复给出相同的值?
我在 core.logic 中试过这个
期望结果是[1 4] [1 5]
但它是[1 4] [1 4] [1 5] [1 5]
然后我开始玩它并发现了这个:
哪里有[1 5]
穿插[1 4]
怎么了?这种重复的东西应该是一个特性还是一个错误?
clojure - core.logic 的动态类型关系
在 core.logic 中定义或使用类型关系的最佳方法是什么?
我尝试了类似这样的方法来获得表单参数类型的简化表示,但是项目使用会导致各种问题
是否已经存在可用的适当关系,还是我应该以不同的方式表达?
prolog - 部分字典/记录统一?
我知道一些 Prologs 支持开箱即用的类字典关联数据结构。对于这样做的实现,它们是否支持与另一个实际上不包含所有键的结构部分统一的概念?
例如,在 core.logic/miniKanren 的语法中:
这将返回 q 绑定为 1 的单个结果。
Prologs 是否给这个操作或这个部分结构命名?
clojure - 在 core.logic 中,两个方向的投影算作关系吗?
我知道project
在 core.logic 中是不相关的。
但是,似乎我可以通过在内部的两个方向投影来获得类似关系的行为conda
,例如:
这算作关系操作吗?还是缺少其他东西使这种非关系性?
clojure - 使用 core.logic 解决和积之谜
因此,我一直在尝试自学 clojure 和 core.logic,并决定尝试实现求和积问题的解决方案(http://en.wikipedia.org/wiki/Impossible_Puzzle)。
到目前为止,我已经实现了前两个步骤。
当域被限制为(解决方案)中的单个数字时,这似乎给出了正确的答案,但是如果我扩展该域,它会立即停止工作。
搜索单个成员域时的结果也包含多次答案。这似乎是由 inscruitable-summands 的每次递归引起的,但我不太确定为什么。
最后,我希望有人可以快速查看我的非唯一因素函数。感觉有点麻烦,我想知道是否有人可以提出更好的选择?
谢谢你的帮助,院长
clojure - Clojure core.logic CLP(FD) 投影 FD 变量
我正在使用 Clojure 的 core.logic CLP(FD) 库(core.logic 版本 0.8.3)研究一个简单的平方打包算法。
正方形表示如下:
每个正方形表示为其左上角和右下角的坐标。
坐标是 FD 变量,在一定的区间内。
我想将解决方案的大小分别定义为距原点最近和最远的正方形的右上角和右下角之间的距离
这似乎适用于普通整数:
即使是完全约束的 FD 变量
但是,当变量的域没有受到完全约束时,它似乎会中断。例如,如果我删除 , 的约束y21 = 1
并且y11
在y21
其域中留下多个值:
我明白了
似乎project
只有当它们的域受到完全约束时才适用于 FD 变量。这是应该的吗?如果是,是否有人对如何对 FD 变量进行非关系算术有任何建议?
谢谢!
clojure - Clojure.logic 与 The Reasoned Schemer 的区别
我一直在使用 Clojure.logic 完成The Reasoned Schemer (TRS),并注意此处记录的差异。我到达第 3 章的第 24 帧,TRS 报告说
应该产生
现在,我实现了`lolo as
这会产生以下奇怪的结果:
这基本上意味着我的 lolo 正在产生泄漏出新变量的解决方案。如果我继续前进,试图看到一个模式,我会得到
但我在雾中看不清楚,我希望能对此有所了解。这是我lolo的一个错误吗?它是 clojure.logic 中的错误吗?TRS 中的求解器和 clojure.logic 中的求解器之间存在合理的区别吗?我如何解释或使用结果?我如何在心理上预测 clojure.logic 的结果?
prolog - 建模约束逻辑程序(用于分析)
面向对象的程序可以用不同的模型建模,例如自动机、过程代数、Petri 网或 UML。其中一些模型可用于执行各种分析,以发现性能或设计中的问题。
我正在研究逻辑编程,想知道 CLP 是否有这种模型?您如何分析 CLP 程序?
clojure - 如何匹配包含 lvar 的地图?
我正在尝试使用地图作为我的数据结构,并初始化它们以包含lvars
稍后从其他关系中分配的值。
这成功了:
但这些都失败了:
我正在使用[org.clojure/core.logic "0.8.5"]
. 我怎样才能使这两个目标都成功?