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

在Scheme中,对于一个普通的、不带引号的列表是否有语法上的糖分?,scheme,lisp,syntactic-sugar,Scheme,Lisp,Syntactic Sugar,在Scheme中,如果我想要一个列表,比如(1233),我只需编写”(1233)。通常,这很好,但实际上相当于(引号(1 2 3)),这与(列表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

在Scheme中,如果我想要一个列表,比如(1233),我只需编写
”(1233)
。通常,这很好,但实际上相当于
(引号(1 2 3))
,这与
(列表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 2 ,(+ 0 3))
=> '(1 2 3)

如果您需要评估列表的一部分,可以使用以下命令:

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

在Racket(我的解释器)中,
#(12(+03))
的计算结果为
”#(12(+03))
请看这个问题:及其公认的答案。@scarLópez在Guile和Chicken中是一样的:向量的字面语法不会计算内部形式。在Racket(我的解释器)中,
#(12(+03))
的计算结果为
。(12(+03))
请看这个问题:及其公认的答案。@ÓscarLópez Guile and Chicken中的相同之处:向量的字面语法不会计算内部的形式。