空リストはアトムかリストか?
() もアトムの一種である。
とのことだが、Racketで
> (list? '())
とやると
#t
と評価される。空リストはアトムかリストか、結局どっちだ?
ちなみにThe Little SchemerではS式がアトムかどうか判別する関数として
(define (atom? x) (and (not (pair? x)) (not (null? x))))
を読者に定義させている。これによるとアトムの定義は
- ドット対でない かつ 空リストでない
となり、空リストはアトムから除外しているようだ。
よく分からないが、The Little Schemerで勉強している都合上、当面この定義に従うことにする。