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

当然。我认为运行-a等工具的名称不是关键——目前的实现细节,除非我们真正理解了其影响并开始使用,否则不需要太关注。

0 投票

评论者:abrooks

我正在考虑将{{run}}/ * 表现为一个条件化操作,如果我们作为第一个参数传递的是一个替换映射表,则使用嵌套形式。

我对{{bagof}}和{{findall}}目前的理解让我觉得,它们在支持{{run}}嵌套功能之外并无太多价值。

我还在考虑{{setof}},这是一个非常有用的功能,将需要基础设施的协助以充分发挥效率。

感恩节之后我将提交新的补丁。

0 投票

评论者:dnolen

太好了,非常感谢。

0 投票

评论者:abrooks

我没有忘记,只是有点忙。

我有机会在圣诞节前完成这项工作,否则,可能要等到新年之后。

0 投票

评论者:abrooks

在遭遇车祸,前往伦敦和摩洛哥旅行,以及忙于日常工作并跟上core.logic活动的繁忙流程(做得很好!)之后,我现在又回来处理这个问题了。

在将补丁向前移植后,我在实现中发现了几个错误,并发现这些问题凸显了我对一些创建的语义的粗略理解。

我现在相当确信,我们不希望把这个命名成{{run}}或* 。在嵌套环境中让它们有相同的意思是过于繁重。

当前的机制与{{findall}}/{{bagof}}/{{setof}}还不是完全匹配,因此我正在寻找一个更好的匹配方案。我将根据所思所想提出有意义的意见以便审查。

0 投票

评论者:dnolen

很高兴听说你一切都好!别担心,你准备好了就随时找个补丁。

0 投票

评论者:abrooks

我已经切换到 Datomic 了,它有 bagof/setof 类型聚合和子查询(尽管这个切换并不是专门为了这个),不知道我何时能回头处理这件事。抱歉!

0 投票

评论者:dnolen

别担心!很高兴 Datomic 对你很有帮助 :)

0 投票

评论者:gordongustafson

已经很久了,但这里有一个短小的补丁,如果有人想审查的话。:)

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