;;; q2.53
(list 'a 'b 'c 'd)
(list (list 'george))
(car '((x1 x2) (y1 y2)))
(cdr '((x1 x2) (y1 y2)))
(cadr '((x1 x2) (y1 y2)))
(pair? (car '(a short list)))
(memq 'red '((red shoes) (blue socks)))
(memq 'red '(red shoes blue socks))

;;; q2.54
;;(equal? '(this is a list) '(this is a list))
;;(equal? '(this is a list) '())
;;(equal?  '() '(this is a list) )
;;(equal?  '() '() )
;;(equal?  3 '() )
;;(equal?  3 3 )
;;(equal? '(this is a (list)) '(this (is a) list))
(define (equal? ls1 ls2)
  (cond
   ((and(null? ls1)(not(null? ls2))) #f) ;;なんかぐちゃぐちゃだなぁ
   ((null? ls1) #t)
   ((null? ls2) #f)
   ((eq? ls1 ls2) #t)
   ((eq? (car ls1) (car ls2)) (equal? (cdr ls1) (cdr ls2)))
   (else #f))
  )
(trace equal?)