我试图弄清楚如何使用缺点:((A . B) . (C . D))
每个cons单元格中的(A . B)
和(C . D)
所在的位置
我试过这样做(cons (cons 'a 'b) (cons 'c 'd))
,但它给了我这个:((A.B) C . D)
我也尝试了这个:(cons (cons 'a 'b) (cons (cons 'c 'd) ()))
,但是它给了我这个:((A . B) (C . D))
任何想法如何实现这一目标?
最佳答案
第一个是您想要的。它们是等效的。您可以像这样验证:
1 ]=> (cons (cons 'a 'b) (cons 'c 'd))
;Value 11: ((a . b) c . d)
1 ]=> (car (cons (cons 'a 'b) (cons 'c 'd)))
;Value 12: (a . b)
1 ]=> (cdr (cons (cons 'a 'b) (cons 'c 'd)))
;Value 13: (c . d)
请记住,列表是一个缺点单元格。 “car”是列表的开头元素或cons单元格的前半部分,而cdr是列表的其余部分或cons单元格的第二个元素。
验证它们是否等效的另一种方法:
1 ]=> '((a . b) . (c . d))
;Value 14: ((a . b) c . d)
关于lisp - 如何在Lisp中做((A.B)。(C.D)),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4445875/