metacircular!

一応必須の課題も終わったし、Scheme演習オプションのmetacircular評価器を作ってみることに。
うーむ。eval-expを実装する段階でcaarとかcadrとかcadarとかcdddrとか使いまくってるな。
caarを実装するにはexpに対してcaaadrを使って、cadrにはcadadrを使って・・・
しまった。これらも定義しなきゃいけないのか。
で、しばらく(cdr (car (cdr...とかバカ正直に打ったあと、
cadarやcdddrとかの組み込み関数をそのまま利用するように変形すればいいことに気づきました。
普通に考えればすぐ思いつくことなのになあ。