読者です 読者をやめる 読者になる 読者になる

何でも無限リスト

純Lispにはアトムとリストがあるけど、アトムを無くして、なんでも無限リストにしたらどうだろう?
今までアトムだと思っていたものは、実はリストだったのだ。
なんでもリストだから、carとcdrは何にでも適用できる。carは左のリストを取り出し、cdrは右のリストを取り出す。
今までアトムで表してきたものを全部無限リストで表現するというより、単にアトムに対してもcarとcdrが適用できるようにするだけだ。
3つのやり方を考えた。
1. (car x) ===> nil, (cdr x) ===> nil
2. (car x) ===> x, (cdr x) ===> nil
3. (car x) ===> x, (cdr x) ===> x
どれでもいい気がする。要はアトムをリストに埋め込んでいるだけで、できることは変わらないはず。
(こうすると、アトムとリストの圏だったのが単純にリストの圏になってすっきりするんじゃないかなーとか)