Lispヤバイ、マジヤバイ。
空集合と、空集合という要素を持つ集合とは別物だ、とかいう高校あたり数学のような話が出てくる。それと同じ話なんだけど、たとえば3番目がnilという要素になってるlistと、そのlistの3番目がなしで4番目以降を詰めている(1個要素数の少ない)listは別物、という結論に達するのに3時間くらいかかった。式を書く以上は評価の結果を返さないといけなくて、たとえnilを返したとしても、それは「何も返していない」のとは違う状態だ。というより、Lispでは「何も返さない」状態が存在しない(はず)
他にも、式を評価するタイミングとか評価される順とかを考えないといけないんだけど、まだその段階に達していないので、それはまたの機会でいいや。
手続き型言語ではないから、ちゃんと理解しておかないとついていけないな。