【发布时间】:2016-05-25 11:26:58
【问题描述】:
在 Scheme 中,如果我想要一个列表,比如 (1 2 3),我会写 '(1 2 3)。通常,这很好,但它实际上等同于(quote (1 2 3)),与(list 1 2 3) 并不完全相同。何时会产生不同结果的示例:
'(1 2 (+ 0 3)) -> (1 2 (+ 0 3))
(list 1 2 (+ 0 3)) -> (1 2 3)
这里有第二行的语法糖吗?对于向量,有。例如:
#(1 2 (+ 0 3)) -> #(1 2 3)
(vector 1 2 (+ 0 3)) -> #(1 2 3)
如果列表没有这样的糖,那将是相当讽刺的,因为在 Scheme 中列表比向量更常用!
【问题讨论】:
-
在 Racket(我的解释器)中,
#(1 2 (+ 0 3))的计算结果为'#(1 2 (+ 0 3)) -
查看这个问题:What is the difference between quote and list? 及其接受的答案。
-
@ÓscarLópez 在 Guile 和 Chicken 中也是如此:向量的文字语法不会评估内部的形式。
标签: scheme lisp syntactic-sugar