В чем разница между '(ab (c)) и (список' a 'b (список' c)) - PullRequest
0 голосов
/ 19 ноября 2018

Я работаю над упражнением 2.57 и у меня такая проблема в чем разница между '(a b (c)) и (список' a 'b (список' 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 ]=>

1 Ответ

0 голосов
/ 19 ноября 2018

Подсказка: что такое (eq? (list 1) (list 1))?

eq? только тестирует объект идентичность .Два отдельно составленных списка не являются одним и тем же списком, даже если их содержимое одинаково.Используйте equal? для равенства значений:

(equal? '(a b (c)) (list 'a 'b (list 'c)))
; => #t
...