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
by

评论者:abrooks

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

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

我仍在考虑{{setof}},它是非常有用的,并将需要基础设施的帮助来实现高效。

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

0
by

评论者:dnolen

太好了,非常感谢。

0
by

评论者:abrooks

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

有可能我在圣诞节之前完成它,否则,可能在新年之后。

0
by

评论者:abrooks

在车祸发生后,前往伦敦和摩洛哥旅行,工作忙碌和核心逻辑活动繁忙的表面上(伟大的工作!),我现在又回到这个问题上了。

在我的实施中移植补丁后,我发现了一些错误,并意识到这些问题凸显了我对创建的一些语义的粗略理解。

现在我相当确信我们不想将这个命名与{{run}}或*}相关联。在嵌套上下文中使其具有相同意义过于牵强。

当前的机制仍然与{{findall}}/{{bagof}}/{{setof}}不完全匹配,因此我正在考虑最佳匹配方案。我会在我有有意义的思想时发布供审查。

0
by

评论者:dnolen

很高兴听到你一切都好!不要担心,只要你方便,我会随时修复这个补丁。

0

评论者:abrooks

虽然不是因为这个原因切换到了Datomic,它具有bagof/setof类型的聚合和子查询功能,但我不确定我是否或何时会回归这个问题。抱歉!

0

评论者:dnolen

不必担心!很高兴Datomic对你来说效果良好 :)

0

评论者:gordongustafson

已经有一段时间了,这里有一个简短的补丁,用于实现findall,如果有人想要审查的话。 :)

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