equal?

Synthroid Without Prescription Inderal No Prescription Nexium For Sale Prevacid Generic Buy Elimite Online Prevacid Without Prescription Ultram No Prescription Prevacid For Sale Ultram Generic Buy Prednisone Online

W Ä?wiczeniu 2.54 autorzy proszÄ? nas o napisanie funkcji equal? zdolnej do por??wnywania list. Jej definicja wynika bezpo??rednio z opisu.

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

Implementacja ta radzi sobie doskonale z symbolami i (dowolnie zagnie??d??onymi) listami symboli, nie bierze jednak pod uwagÄ? liczb. Je??eli przyjmiemy, tak jak radzÄ? nam autorzy w przypisie, ??e dwie liczby sÄ? r??wne, je??eli ich warto??ci numeryczne sÄ? r??wne, to otrzymamy nastÄ?pujÄ?cÄ? implementacjÄ?:

(define (equal? a b)
  (cond
   [(and (pair? a) (pair? b))
    (and (equal? (car a) (car b))
         (equal? (cdr a) (cdr b)))]
   [(and (number? a) (number? b))
    (= a b)]
   [else
    (eq? a b)]))

Komentuj wpis