新しいアカウントで始めました。

身の回りの出来事や写真が中心です。

Scheme最初から躓いてます。list?、pair? 追記しました。

2021-11-25 14:53:00 | Lisp

参考にしてるサイトです。PDFファイルです。

 

上の図でsampleは、何故(list? sample)が#fなのか?sample自体をみると、リストに見えます。

sample2は一体何者?(list? sample2)でも(pair? sample2)でも、#fです。

listの条件として、最後の要素の右が"'()”で終わっていること。


コメント (2)    この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« EmacsではC++もコンパイル、... | トップ | Scheme、DrRacketまたですね... »
最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
cametan_42さん、コメントありがとうございます (isam)
2021-11-25 19:46:30
 なるほど。確かに最後の要素で右が'()となっているかなってないか?だったんですね。少し前の記述にありました。
返信する
improper list (cametan_42)
2021-11-25 16:37:24
リストは二種類あってそれらは

・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 を返します。
返信する

Lisp」カテゴリの最新記事