理系学生日記

おまえはいつまで学生気分なのか

問題2-54 (2.3.1 Quotation)

同じ要素が同じ順番に並んでるリストはequalだそうで、それを判定する関数作る。

(define (equal? list1 list2)
  (cond ((and (null? list1) 
	      (null? list2))
	 #t)
	((eq? (car list1) (car list2))
	 (equal? (cdr list1) (cdr list2)))
	(else #f)))

下の各リストがequalかどうか。

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