2.3.1 Quotation

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-16.html#%_sec_2.3.1

ここは問題自体は簡単なのだが、quoteという演算子は結構くせ者な気がする。
こいつは、General Formなんだろうか? それともSpecial Formなのだろうか?


例えば、

gosh> (x 1)
*** ERROR: unbound variable: x
gosh> (quote ((x 1) (y 2) (z 3)))
((x 1) (y 2) (z 3))

となる。至極当然。


とすると、結局引数が評価されていないわけで、quoteはSpecial Formと言うことになる。


ま、今の段階ではどっちでもいいような気がするが。

問題2.53

タイプするだけなので省略。

問題2.54

equal?のMy定義

(define (myequal? a b)
  (cond ((and (pair? a) (pair? b))
	      (and 
	         (myequal? (car a) (car b))
		 (myequal? (cdr a) (cdr b))))
	     ((and (not (pair? a)) (not (pair? b)))
	      (eq? a b))
	     (else #f)))
問題2.55

最初、

(car ''abracadabra)
(car (quote (quote abracadabra)))

と等価だからだろ、と思っていたのだけど、コレって、結局quoteがSpecial Formだから、と言うのが解答になるのかな。