あと、
(define (f a b) (+ (g a) b))
なんて行があったとして、gがこの行以前に束縛されていて
この後変更されないことが保証されていれば最適化ができると思うのです。

(define (a f) (lambda (b) (f (+ 1 b))))
(map (a func) l)
なんて時は(a func)の返り値は実行時にコンパイルするんでしょうか?


手続きを束縛するシンボルを破壊的に操作することって
ほぼない上に最適化の邪魔になるからとても嫌なんですが。