Ex. 4.14
car や cdr と同じように、基本手続きに map を追加する
(define primitive-procedures (list (list 'car car) (list 'cdr cdr) (list 'map map) ...
で、子Schemeで、map を使ってみる。
(map square '(2 3))
map は基本手続きなので、apply-primitive-procedure で処理されて、、、結局
(apply-in-underlying-scheme map '(square (2 3)))
という形で親Schemeに渡される。 map の2項以下が、square もろとも1つの引数扱いになっている。 もちろん親Schemeは、こんな map の構文は許していないのでエラーになる。
なお、親Schemeで許されている map の構文は
(apply-in-underlying-scheme map square '(2 3))
である。apply-primitive-procedure を改造して map のときだけうまく調整すれば、修正可能かもしれない。