今参考にしてるサイトです。PDFファイルです。
上の図でsampleは、何故(list? sample)が#fなのか?sample自体をみると、リストに見えます。
sample2は一体何者?(list? sample2)でも(pair? sample2)でも、#fです。
listの条件として、最後の要素の右が"'()”で終わっていること。
今参考にしてるサイトです。PDFファイルです。
上の図でsampleは、何故(list? sample)が#fなのか?sample自体をみると、リストに見えます。
sample2は一体何者?(list? sample2)でも(pair? sample2)でも、#fです。
listの条件として、最後の要素の右が"'()”で終わっていること。
・proper list
・improper list
です。
proper listはケツが空リストのリスト、それ以外をimproper listと言います。
> (list? (cons 1 (cons 2 (cons 3 '()))))
#t
> (list? (cons 1 (cons 2 3)))
#f
>
list?はproper listの場合 #tを返すので、「リストでもimproperな場合は」 #f を返します。
> (pair? (cons 2 3))
#t
> (pair? (cons 2 (cons 3 '())))
#t
> (pair? 2)
#f
>
pair?は・・・Schemeには定義されてないけど、引数がatomじゃない時 #t を返してatomの時 #f を返します。