首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用报价和取消报价来更忠实地将推理的阴谋家翻译成球拍?

如何使用报价和取消报价来更忠实地将推理的阴谋家翻译成球拍?
EN

Stack Overflow用户
提问于 2018-11-16 03:35:35
回答 1查看 144关注 0票数 1

(球拍设置中我的miniKanren的详细信息出现在bottom1上。)

引号和取消报价在推理的阴谋家中的工作方式似乎与他们在球拍中的工作方式不匹配。例如,第2章第2节suggests2函数定义如下:

代码语言:javascript
复制
(run #f
     (r )
     (fresh (y x )
            (== '(,x ,y) r )))

如果我对此进行评估,我就会得到'((,x ,y))。如果我把它改写成这样:

代码语言:javascript
复制
(run #f
     (r )
     (fresh (y x )
            (== (list x y) r)))

我得到了预期的结果,'((_.0 _.1))

这似乎是个小问题,但在许多情况下,所需的翻译非常冗长。例如,在第3章的练习45 (第34页)中,本书提供了以下定义: roughly3:

代码语言:javascript
复制
(run 5 (r)
     (fresh (w x y z)
            (loto (('g 'g) ('e w) (x y) . z))
            (== (w (x y) z) r)))

为了得到他们得到的结果,我不得不这样改写它:

代码语言:javascript
复制
(run 5 (r)
     (fresh (w x y z)
            (loto (cons '(g g)
                        (cons (list 'e w)
                              (cons (list x y)
                                    z))))
            (== (list w (list x y) z)
                r)))

1正如所描述的这里,我运行了raco pkg install minikanren,然后定义了一些缺失的部分。

事实上,他们写的并不准确,但是如果你注意到这节的脚注和之前的一段,那就是你得到了什么。

3模数一些含蓄的引语和未引用的话,我无法推断。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-03 08:03:54

使用反向引号`,而不是一直使用的简单引号'

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53331052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档