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

车祸后,前往伦敦和摩洛哥旅行,在工作中追赶上,以及赶上core.logic活动显然繁忙的流程(伟大的工作!),我现在又回到这里了。

在将补丁移植到前面后,我在我的实现中发现了几个错误,并意识到这些问题凸显了我对一些语义的模糊理解。

我现在相当确信,我们不想将这个名字与{{run}}或{{*}}}相关联。在嵌套上下文中试图让它们具有相同的意思是一个太大的负担。

当前的机制仍然与{{findall}}/{{bagof}}/{{setof}}不完全匹配,所以我正在寻找一个合适的匹配。我会在我有意义的想法时发布它们供审查。

0 投票

评论者:dnolen

很高兴听说你没事!不用担心,只要你准备好,随时给我补丁。

0 投票
by

评论者:abrooks

我已经切换到了具有 bagof/setof 类型聚合和子查询的 Datomic,尽管切换并非专门为此(),我不知道何时会回到这里。抱歉!

0 投票
by

评论者:dnolen

没关系!很高兴 Datomic 对您有所帮助 :)

0 投票
by

评论者:gordongustafson

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

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