list
为语法似乎神秘球拍列表语法似乎不一致
“(1 2)和(列表1中2)是相同的:
> (equal? '(1 2) (list 1 2))
#t
但这些都不是相同的???
(equal? '('(1 2)) (list (list 1 2)))
#f
也
> (list (list 1 2))
'((1 2))
> '('(1 2))
'('(1 2))
list
为语法似乎神秘球拍列表语法似乎不一致
“(1 2)和(列表1中2)是相同的:
> (equal? '(1 2) (list 1 2))
#t
但这些都不是相同的???
(equal? '('(1 2)) (list (list 1 2)))
#f
也
> (list (list 1 2))
'((1 2))
> '('(1 2))
'('(1 2))
是的,那些是不同的。这里的答案是,报价比你想象的要强大得多。
具体来说,报价让您进入“数据语言”;在这种数据语言中,每一对括号都引入一个嵌套列表,每个标识符都被视为一个符号。
所以,举例来说,
'(a (b c) d "e" ((g)))
相同
(list 'a (list 'b 'c) 'd "e" (list (list 'g)))
注意的第一个多少越短,比第二。
当你把一个报价期限内报内,你会得到惊喜;这是因为't实际上是(报价t)的简写。因此'('(1 2))是(quote((quote(1 2))))的简写,与(list(list'quote(list 1 2)))相同。
短版:不要把报价报价内,记住报价进入“数据语言”。 quasiquote让事情变得更有趣!
谢谢你约翰! – user3200050
可能重复[引用和列表之间有什么区别?](http://stackoverflow.com/questions/34984552/what-is-the-difference-between-quote-and-list) –