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报告)
...