gpt4 book ai didi

scheme - Scheme 和 Racket 中嵌套引号的行为

转载 作者:行者123 更新时间:2023-12-04 14:33:25 24 4
gpt4 key购买 nike

在 Racket 中编写函数时,我不小心在符号前放置了两个单引号而不是一个。即我不小心写了 ''a 并发现了一些看起来很奇怪的嵌套引号的行为。我正在使用 DrRacket 并使用 Racket lang 和 R5RS lang 对此进行了测试。

(write (pair? (quote (quote a))))

打印:#t。
(write (car (quote (quote a))))

打印品:报价


(write (quote (quote a)))


(write '(quote a)))

两者都打印:'a

有人能告诉我为什么在 Scheme(和 Racket)中使用函数对吗?将 (quote (quote a))) 解释为一对两个元素 quote 和 a ,但函数 write 打印出 'a 而不是 (quote a) 。

最佳答案

在术语周围加上引号 ( ' ) 并包裹 quote它周围的形式是相同的。也就是说,他们read到同一个词。

所以以下所有表达式在 Scheme 中都是相同的:

''a
'(quote a)
(quote 'a)
(quote (quote a))
quote form 的意思是“将接下来的内容解释为数据——即使它包含另一个 quote”。子项被括号括起来,所以它是一个列表;内 quote只是一个符号。

在某些情况下,打印机在其输出中使用诸如引号 ( ' ) 之类的阅读器缩写。我有点惊讶你收到 write但是,要这样做;对我来说,它总是写为 (quote a) .

关于scheme - Scheme 和 Racket 中嵌套引号的行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7984245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com