在 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 中列表的使用频率远高于向量!
最佳答案
如果你需要评估列表的一部分,你可以使用quasiquoting and unquoting ,像这样:
`(1 2 ,(+ 0 3))
=> '(1 2 3)
关于scheme - 在 Scheme 中,普通的、未引用的列表是否有语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394355/