引用将以下表达式改为什么?

时间:2017-09-03 13:37:21

标签: scheme

(display (+ 1 2)) ; output 3
(display '(+ 1 2)) ; output (+ 1 2)

(display z) ; Error: execute: unbound symbol: "z" []
(display 'z) ; output z

引用是什么将以下表达式更改为?字符串,列表或两者?第一个例子似乎变成了一个列表,而第二个例子似乎变成了一个单字符串。

Scheme中的字符串和列表是否相关类型?

感谢。

1 个答案:

答案 0 :(得分:1)

'<datum>只是(quote datum)的同义词。它完全引用了它后面的数据。在您的示例中,首先引用一个语法列表,然后它只是一个符号。

String是一种原始数据类型,而list是一个聚合,是cons的两个值(我知道的语言到目前为止,只有Haskell将字符串定义为字符列表,不确定Erlang是否敢于做同样的事)。尽管它们显然可以使用相同的通用算​​法,但它们的方法虽然是同构的,但在Scheme的标准库中有不同的名称。