>>604
何かレイヤをごっちゃにしてる気がする。S式をapplyすることはできないぞ。
実行時にapplyが見るのはあくまで手続きオブジェクトであって、lambdaから始まるリストじゃない。
(apply (lambda (x) x) '(1)) というプログラムがあった場合、コンパイル段階で
(lambda (x) x) のところは「実行されると『引数をそのまま返す手続きオブジェクト』を返す式」
という内部表現に既に変換されてる。lambdaとかはもはや関係ない。
データとしてのS式と、実行されるプログラムは別の世界にある。
その二つの世界をつなぐのがevalな。

evalは必ずしも「インタプリタ」を持ってる必要はなくて、その場でコンパイルして
動的リンクして実行したっていいわけだが。SchemeでSchemeインタプリタを書くのは
そんなに難しくないから、インタプリタを持つ設計があってもいい。