計算機プログラムの構造と解釈 第二版 P85 問題2.54

あわよくば髪を切りにいきたいので、問題の後半をあまりよんでいない。
でも、多分出来ているので出来ているのだろうという意味の分からん自信。


P84のmemqの実装を参考にすると分かりやすいと思います。


実装

#!/usr/local/bin/gosh
;; -*- coding: utf-8 -*-

(use ggc.debug.trace)
(use math.mt-random)


(define (equal? a b)
  (cond ((null? a)  
         (if (null? b) #t
           #f))
        ((eq? (car a) (car b)) 
         (equal? (cdr a) (cdr b)))
        (else #f)))


;; main
(define (main args)
  
  (display "(equal? '(this is a list) '(this is a list)): " )
  (display (equal? '(this is a list) '(this is a list)))
  (newline)

  (display "(equal? '(this is a list) '(this (is a) list)): ")
  (display (equal? '(this is a list) '(this (is a) list)))
  (newline)

  0) 


実行

(equal? '(this is a list) '(this is a list)): #t
(equal? '(this is a list) '(this (is a) list)): #f