SICPを読む(45) 2.2.1(1) 空リスト

やっとリストらしくなってくるぞぉ〜。

が・・・しかし・・・nilが無い!!

gaucheでは、

gosh> (cons 1 (cons 2 nil))
*** ERROR: unbound variable: nil
Stack Trace:
_______________________________________
gosh> (cons 1 (cons 2 null))
*** ERROR: unbound variable: null
Stack Trace:
_______________________________________
gosh> (cons 1 (cons 2 `()))
(1 2)

MzSchemeでは、

> (cons 1 (cons 2 nil))
reference to undefined identifier: nil
> (cons 1 (cons 2 null))
(1 2)
> (cons 1 (cons 2 `()))
(1 2)

となってしまう。

MIT/GNU Schemeにもnilは無かった。

空リスト

ボクノスで空リストを表す場合は、`()を使うことにする。

(cons 1 (cons 2 `())) ; (1 2)

おぉ、

(list)でも空リストが作れた。

gosh> (list)
()
gosh> (cons 1 (cons 2 (list)))
(1 2)

まとめ

SICPnilは`()に変換する必要がありそうだ。