時間があまりなくて、まだ読み進めていないのだが、1点気になる記述を発見。
「はじめに」のxiiiページに、
atom? が読者のSchemeで正しく定義されているかどうかを知るには、 (atom? (quote 0)) として、#fが返ることを確かめてほしい。
と書いてあるのだが、これって #t が返る気がする。
(define atom? (lambda (x) (and (not (pair? x)) (not (null? x)))))
と本に書いてある通りに定義して実行すると #t が返ってくる。というか数値ないしシンボル*1はアトムのはずでは?
- #f と #t を間違えた。
- (quote 0) ではなく (quote ()) の間違い。
このどちらかだと思うのだが、私の勘違いだろうか? 個人的には2番目のような気がする。
*1:quoteしてるから数値じゃなくてシンボル、なのか? いや、数字で始まっているからシンボルじゃなくて数値のままなのか? その辺りはまだ分からない。