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

xda*_*liu 0 lisp scheme 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)
Run Code Online (Sandbox Code Playgroud)

第二行是否有语法糖?对于矢量有.例如:

#(1 2 (+ 0 3)) -> #(1 2 3)
(vector 1 2 (+ 0 3)) -> #(1 2 3)
Run Code Online (Sandbox Code Playgroud)

如果列表中没有这样的糖,那将是非常具有讽刺意味的,因为列表的使用方式比Scheme中的向量更常用!

Ósc*_*pez 6

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

`(1 2 ,(+ 0 3))
=> '(1 2 3)
Run Code Online (Sandbox Code Playgroud)