2.1.3 What is meant by data?
http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-14.html#%_sec_2.1.3
この節を始めて読んだときは、かる〜く、ていうか、思いっきりカルチャーショックを受けた。
だって、cons, car, cdrがこんなんで定義できんだぜ。
(define (cons x y) (define (dispatch m) (cond ((= m 0) x) (= m 1) y) (else (error)))) dispatch) (define (car z) (z 0)) (define (cdr z) (z 1))
consと言うのは、ディスパッチャクロージャを返す手続きで、car, cdrはディパッチャにメッセージを送って、値をもらうもの。
ここまでくると、データとは何ぞや?という質問に対して、ちゃんと解答できるだけの解釈を持ち合わせていない。
一応本には、
データは選択子と構成子とこれらの手続きを有効な表現とするために満たすべき条件
と言う形で定義されている。
う〜ん、やっぱり不思議。