関数 atom? は任意のS式を引数に取り、それがアトムであるとき真(#t)を返す。といっても Gauche に atom? は用意されていないので、まずは脚注にある定義を写経。
gosh> (define atom? (lambda (x) (and (not (pair? x)) (not (null? x))))) atom?
関数の定義の仕方は、本文で触れていないのでここでも触れない。そのうち出てくるだろう。
さあ、試してみよう。
gosh> (atom? 'Harry) #t gosh> (atom? '(Harry had a heap of apples)) #f gosh> (atom? (car '(Harry had a heap of apples))) #t gosh> (atom? (cdr '(Harry had a heap of apples))) #f gosh> (atom? (cdr '(Harry))) #f
最後の例では、(cdr '(Harry))
が 空リストなので偽(#f)なのだな。