(display (+ 1 2)) ; output 3
(display '(+ 1 2)) ; output (+ 1 2)
(display z) ; Error: execute: unbound symbol: "z" []
(display 'z) ; output z
引用是什么将以下表达式更改为?字符串,列表或两者?第一个例子似乎变成了一个列表,而第二个例子似乎变成了一个单字符串。
Scheme中的字符串和列表是否相关类型?
感谢。
答案 0 :(得分:1)
'<datum>
只是(quote datum)
的同义词。它完全引用了它后面的数据。在您的示例中,首先引用一个语法列表,然后它只是一个符号。
String是一种原始数据类型,而list是一个聚合,是cons
的两个值(我知道的语言到目前为止,只有Haskell将字符串定义为字符列表,不确定Erlang是否敢于做同样的事)。尽管它们显然可以使用相同的通用算法,但它们的方法虽然是同构的,但在Scheme的标准库中有不同的名称。