[Lisp処理系を作る] 05日目 Atom と True を作る

前回の Symbol クラスの時にまだ Atom クラスを作っていなかった。 ついでに True クラスも作っておこう。

Atom の特徴

  • 基本的に nil ではない。
    • ただし nil という名前の Symbol は nil として扱う。
  • 実際にはこれのインスタンスは作らない

実装は IsNil で false を返却するようにすれば良いんじゃないかな。

True の特徴

nil に似ている部分もあるが、違う部分もある。

  • Lisp 上では t で表す。
  • nil ではない値の代表。
  • Symbol である。
    • それには t が束縛されている。
    • "t" という名前を持っている。
  • List ではない。

ということで Symbol クラスを継承して True クラスを作り、定数 T を用意する。 bind と unbind できない "t" 固定の名前を持ち自身を束縛しているクラスにすれば良いか。

これまでの成果