2024 Clojure调查问卷!中分享您的想法。

欢迎!请查阅关于页面了解如何使用本网站。

0 投票
core.logic

这可以通过注释逻辑变量并通过传递当前替换嵌入运行,在它之上运行,并提取重新实例化的值并将它们统一回当前替换来实现。

13 答案

0 投票

评论由:abrooks发表

我正在尝试理解 StackOverflow 上的这个问题的答案

http://stackoverflow.com/questions/7647758/prolog-findall-implementation

0 投票

评论由:abrooks发表

讨论 - 支持嵌套版本'run-a/'run-a**的初始工作补丁。绑定符号必须与现有lvars匹配,所有返回值的向量将被统一。

0 投票

评论由:abrooks发表

我们是否应该提供模拟bagof、setof和findall的包装器?

我感觉当前名称run-a/run-a**还不够好。"a"实际上是内部实现细节。我会在想出更好的名称后,提供一个修订补丁(有什么建议吗?)。

0 投票

评论者:dnolen

好的,是的,我认为run-a等名称并不重要 - 目前只是实施细节,直到我们真正理解其影响并且得到一些使用经验。

0 投票

评论由:abrooks发表

我正在考虑将 {{run}}/ * 简单地设置为条件化,如果第一个参数是替换映射,则使用嵌套形式。

我对 {{bagof}} 和 {{findall}} 的当前理解使我认为它们没有必要在嵌套 {{run}} 功能之外实现。

我还在考虑 {{setof}},它非常有用,并希望基础设施提供帮助以实现高效性。

感恩节后将提交一个新补丁。

0 投票

评论者:dnolen

太好了,非常感谢。

0 投票

评论由:abrooks发表

我还没有忘记,只是最近忙得没时间。

我有小机会在圣诞节前完成这个任务,否则,可能是在新年后。

0 投票

评论由:abrooks发表

在一场车祸、前往伦敦和摩洛哥的旅行以及处理工作之后,我还忙于核心的逻辑活动(做得很好!),我现在又回到了这个问题上。

在将补丁向前移植后,我在实施中发现了一些错误,意识到这些问题突出了我对所创建的一些语义的粗略理解。

现在我相当确信我们不希望将其命名为 {{run}} 或 * }。在嵌套上下文中使其具有相同的意义是一种很大的压力。

当前的机制与 {{findall}}/{{bagof}}/{{setof}} 还不完全匹配,所以我正在查看最适合的搭配。我会在我有这些意义深远的想法时发布。

0 投票

评论者:dnolen

很高兴听到您一切正常!不要担心,您准备好补丁后,我将随时进行使用。

0 投票

评论由:abrooks发表

我已经切换到 Datomic(它具有 bagof/setof 类型聚合和子查询,尽管切换并不是专门为了这些),我不知道我何时或是否将回到这个问题。抱歉!

0 投票

评论者:dnolen

不要担心!很高兴 Datomic 对您来说很有效 :)

0 投票

评论者:gordongustafson

好久不见了,这是一段实现 findall 的短期补丁,供需要的人审查。 :)

0 投票
参考: https://clojure.atlassian.net/browse/LOGIC-68(由 dnolen 报告)
...