请分享您的看法,参加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发表

在车祸、前往伦敦和摩洛哥旅行、工作中以及在显然非常繁忙的核心逻辑活动流中(做得好!)积压后,我回来了。

我在将补丁向前移植后发现了一些实现中的 Bug,并意识到这些问题凸显了我对某些语义的粗心理解。

现在我相当确定我们不想用{{run}}或*为这个命名。在嵌套的上下文中试图使它意味着相同的事情是一个很大的负担。

当前的机制与{{findall}}/{{bagof}}/{{setof}}仍然不完全匹配,所以我正在寻找一个合适的匹配方案。我将在我有有意义的思想时发表供审查的思考。

0

评论者:dnolen

很高兴听到你很好!不用担心,你准备好时我会修复补丁。

0

评论由:abrooks发表

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

0

评论者:dnolen

没问题!很高兴Datomic对你有帮助 :)

0

评论者:gordongustafson

已经很久了,以下是一个短小的补丁,用于实现findall,如果有兴趣可以审阅。:)

0
...