我试图弄清楚如何使用缺点:
((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/

10-12 14:12