Решение упражнения 2.54 из SICP

7 February, 2008 (21:23) | Решения упражнений

В соответствии с примечанием реализуем процедуру equal? таким образом, чтобы она корректно работала и с числами тоже. Отметим также, что мы считаем два пустых списка эквивалентными.

Процедуру equal? можно определить таким образом:

(define (equal? a b)
  (or (and (null? a)
           (null? b))
      (and (number? a)
           (number? b)
           (= a b))
      (and (symbol? a)
           (symbol? b)
           (eq? a b))
      (and (pair? a)
           (pair? b)
           (equal? (car a) (car b))
           (equal? (cdr a) (cdr b)))))

Здесь я обошелся без конструкции cond, хотя можно было бы использовать при реализации и ее.

Comments

Comment from anton0xf
Date: August 17, 2009, 9:03 am


(define (equal? a b)
(if (and (pair? a) (pair? b))
(and (equal? (car a) (car b)) (equal? (cdr a) (cdr b)))
(eq? a b)))

Write a comment