FrontPage
New
Tools
Index
TempPage
Edit: [Lisp処理系を作る] 12日目 設計の修正
作っている最中に問題が発生したので対処することにする。 !!! 問題 + Symbol クラスでインスタンスに値とセットで保持していた ** 名前が一緒なら同じ値がbind されているようにするのに苦労する。 + 「List の car と cdr が nil」 ならそれを nil としていたが、それだと最後に nil がある場合の処理が出来ない。 ** List と nil を明確に区別する必要がある。 + 定数が無いので nil に値を束縛できる ** 定数を用意する必要がある。 !!! 対処法 + Symbol クラスに値をセットにしない。 ** Symbol はあくまで名前のみ持つクラス ** それに何が束縛されているのかは Env の(SymbolTable の)仕事とする。 + List を継承して Nil クラスを用意する。 ** Nil クラスのインスタンスのみ nil とする。 + SymbolTable クラスに定数の仕組みを導入する。 ** 通常の変数と被る部分があるのでそこは注意をする必要がある。 !!! 次の日 [[[Lisp処理系を作る] 13日目 システム関数を作る]]
Administrator's Sign:
freeze
Attachment
New:
Rename
Title:
Administrator's Sign: