Exercise 2.54: Two lists are said to be
equal? if they contain equal elements arranged in the same order. For
example,
(equal? '(this is a list)
'(this is a list))
is true, but
(equal? '(this is a list)
'(this (is a) list))
is false. To be more precise, we can define equal? recursively in
terms of the basic eq? equality of symbols by saying that a and
b are equal? if they are both symbols and the symbols are
eq?, or if they are both lists such that (car a) is equal?
to (car b) and (cdr a) is equal? to (cdr b). Using
this idea, implement equal? as a procedure.
练习 2.54:如果两个表所含元素相同且排列顺序相同,则称它们 equal?。例如,
(equal? '(this is a list)
'(this is a list))
为真,但
(equal? '(this is a list)
'(this (is a) list))
为假。更精确地说,我们可以用符号的基本相等谓词 eq? 递归地定义 equal?:若 a 和 b 都是符号且符号 eq?,或者它们都是表且 (car a) 与 (car b) equal? 同时 (cdr a) 与 (cdr b) equal?,则称 a 与 b equal?。用这一思想将 equal? 实现为一个过程。
(equal? '(this is a list)
'(this is a list)) (equal? '(this is a list)
'(this (is a) list))