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
by

评论者:dnolen

是的,请。是的,我认为run-a等名称不是关键 —— 现在暂时不考虑它们的具体实现,直到我们真正理解它们的影响并且使用者变多。

0
by

评论由:abrooks发表

我在考虑简单地将{{run}}/ *的条件化依赖于第一个参数,如果我们以替换映射作为第一个参数被调用,则使用嵌套形式。

我对{{bagof}}和{{findall}}的理解使我认为它们不值得在嵌套的{{run}}功能之外实现。

我仍在考虑{{setof}},这是一个相当有用的功能,将需要基础设施的帮助来提高效率。

感恩节之后,我会提交一个新的补丁。

0
by

评论者:dnolen

非常好,非常感谢。

0
by

评论由:abrooks发表

我没有忘记,只是最近工作量很大。

我有小概率在圣诞节前完成这项任务,否则,将在新年后。

0
by

评论由:abrooks发表

在一次车祸后,我去了伦敦和摩洛哥旅行,忙于工作,并忙于处理核心逻辑活动中的显然非常忙碌的流程(做得很好!),现在我回来继续处理这些问题。

我在将补丁移植到前向后,在实现中发现了几个错误,并意识到这些问题凸显了我对所创建的一些语义理解得很糟糕。

我现在相当确信我们不想将这个功能命名为{{run}}或*}。在嵌套的上下文中试图使它具有相同的意义是过于吃力。

当前的机制仍然与{{findall}}/{{bagof}}/{{setof}}不完全匹配,所以我正在寻找最佳的匹配方式。我会在我有意义的思想出现时发表供审查的见解。

0

评论者:dnolen

很高兴听到你一切都好!不用担心,等你准备好补丁时我会去拿。

0

评论由:abrooks发表

我已经切换到具有 bagof/setof 类型聚合和子查询的 Datomic,但不知道是否或何时我会回到这个问题。抱歉!

0

评论者:dnolen

不用在意!很高兴 Datomic 对你来说一切顺利 :)

0

评论者: gordongustafson

已经过去了很久,但这里有一个简短的补丁来实现 findall(如果有人想要审查的话)。 :)

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