atom?

関数 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)なのだな。

カテゴリー: Scheme パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください