'(a b (c)) 和 (list 'a 'b (list 'c)) 有什么区别
What's the different between '(a b (c)) and (list 'a 'b (list 'c))
我正在做练习 2.57,我遇到了这样的问题
'(a b (c)) 和 (list 'a 'b (list 'c)) 之间有什么不同,因为它们在方案解释器中看起来完全一样?
1 ]=> (eq? '(a b (c)) (list 'a 'b (list 'c)))
;Value: #f
1 ]=> '(a b (c))
;Value 2: (a b (c))
1 ]=> (list 'a 'b (list 'c))
;Value 3: (a b (c))
1 ]=>
提示:什么是(eq? (list 1) (list 1))
?
eq?
仅测试对象 身份 。两个单独构造的列表不是同一个列表,即使它们的内容相同。使用 equal?
表示值相等:
(equal? '(a b (c)) (list 'a 'b (list 'c)))
; => #t
我正在做练习 2.57,我遇到了这样的问题 '(a b (c)) 和 (list 'a 'b (list 'c)) 之间有什么不同,因为它们在方案解释器中看起来完全一样?
1 ]=> (eq? '(a b (c)) (list 'a 'b (list 'c)))
;Value: #f
1 ]=> '(a b (c))
;Value 2: (a b (c))
1 ]=> (list 'a 'b (list 'c))
;Value 3: (a b (c))
1 ]=>
提示:什么是(eq? (list 1) (list 1))
?
eq?
仅测试对象 身份 。两个单独构造的列表不是同一个列表,即使它们的内容相同。使用 equal?
表示值相等:
(equal? '(a b (c)) (list 'a 'b (list 'c)))
; => #t