Equal? в виде процедуры
Предикат
equal?
для двух списков возвращает истину, если они содержат одни и те же элементы в одинаковом порядке. Например,
(equal? '(this is a list) '(this is a list))
истинно, но
(equal? '(this is a list) '(this (is a) list))
ложно. Более точно, можно определить
equal?
рекурсивно в терминах базового равенства символов
eq?
, сказав, что
a
равно
b
, если оба они символы и для них выполняется
eq?
либо оба они списки и при этом верно, что
(car a)
равняется в смысле
equal? (car b)
, а
(cdr a)
равняется в смысле
equal? (cdr b)
. Пользуясь этой идеей, напишите
equal?
в виде процедуры
equal-proc?
.
Комментарии отсутствуют.