scheme - 在 Scheme 中,普通的、未引用的列表是否有语法糖?

标签 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 中列表的使用频率远高于向量!

最佳答案

如果你需要评估列表的一部分,你可以使用quasiquoting and unquoting ,像这样:

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

关于scheme - 在 Scheme 中,普通的、未引用的列表是否有语法糖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35394355/

相关文章:

javascript - 是否有编译为 javascript 的 lisp?

lambda - 创建一个 Lisp 宏,可以将 lambda 应用于上下文中的列表

scheme - 在 Scheme 中,if 可以表示为 bool 运算符的组合吗?

scheme - Racket 方案在函数中定义常量

functional-programming - 将文本解析为 Racket/Scheme 中的树

tree - 算术树的前、中、后顺序 [方案/ Racket ]

lisp - 带有 progn 的 Lisp 中的嵌套 IF 语句

c++ - for循环的简写——C++中的语法糖(11)

language-features - 支持 bool 语法糖的语言

runtime-error - 我的代码显示错误 “application: not a procedure”或 “call to non procedure”