関数型言語の勉強にSICPを読もう - (62) 4章 - 超言語的抽象(220ページ) C++でSchemeインタプリタを作ろう11
引き続き Primitive Procedureの実装。今日は cons/car/cdr 。
純Lispには欠かせない要素です。
Pairというクラスを用意してあげて、 consのapply時に Pair を返す。
car/cdr は Pair を受け取り、それぞれ first/secondを返す。
という実装です。
例のごとく以下のように名前空間に追加する。
environment->defineVariable(new Variable("+"), new Plus()); environment->defineVariable(new Variable("cons"), new Cons()); environment->defineVariable(new Variable("car"), new Car()); environment->defineVariable(new Variable("cdr"), new Cdr());
計算機プログラムの構造と解釈
posted with amazlet on 06.05.31