“@”在方案语言中是什么意思?

时间:2021-01-27 12:17:25

标签: lambda scheme

我正在尝试理解以下函数:

((lambda 'b
((lambda 'a '''''a) 'b `(this)))
(lambda (x)
(lambda (z)
`(,x ,@z)))
(car ''unquote))

输出为:

(quote quote quote quote quote this)

我正在尝试理解 '@z' 的含义,有人知道吗?

1 个答案:

答案 0 :(得分:1)

' syntax-sugar 代表 quote

` quasiquote

的语法糖

, unquote

的语法糖

,@unquote-splicing

的语法糖

看看这个简单的例子:

`(1 ,(+ 1 1) ,@(list 3 4)) ;==> (1 2 3 4)

你可以像这样重写它,你会得到同样的结果:

(quasiquote (1 (unquote (+ 1 1)) (unquote-splicing (list 3 4)))) ;==> (1 2 3 4)

https://www.cs.rpi.edu/academics/courses/fall00/ai/scheme/reference/schintro-v14/schintro_129.html

https://docs.racket-lang.org/reference/quasiquote.html

https://courses.cs.washington.edu/courses/cse341/04wi/lectures/14-scheme-quote.html