Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
850 views
in Technique[技术] by (71.8m points)

lambda - what is '@' means in scheme language?

I am trying to understand the following function:

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

the output is:

(quote quote quote quote quote this)

I am trying to understand the '@z' meaning, someone knows?

question from:https://stackoverflow.com/questions/65919011/what-is-means-in-scheme-language

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

' is syntax-sugar for quote

` is syntax-sugar for quasiquote

, is syntax-sugar for unquote

,@ is syntax-sugar for unquote-splicing


Look at this simple example:

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

You can rewrite it like this and you will get the same result:

(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


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...