在Scheme中,是否有一个普通的,不带引号列表的语法糖?

时间:2016-02-14 16:49:18

标签: scheme lisp syntactic-sugar

在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中的向量更常用!

1 个答案:

答案 0 :(得分:6)

如果您需要评估列表的一部分,可以使用quasiquoting and unquoting,如下所示:

`(1 2 ,(+ 0 3))
=> '(1 2 3)