#IFPH読書会ではお世話になっております。
昨日は急用のため中座し、大変失礼しました。
同書(日本語版)p.88「4.1.1 データ型としてのリスト」では、
Listの実装として、以下のコードが挙げられています。
data List α = Nil | Cons α (List α)
すぐ下にはConsの代わりに (:)、Nilの代わりに[]を使うあります。
そして、
[1,2,3] = 1 : 2 : 3 : []
が説明されています。
これだけだと話は上手く閉じるのですが、
その後 p.98になると、x:⊥, x:y:⊥などが擬リストとして紹介され、
[⊥,⊥]は⊥:⊥:[]だから擬リストでない、という話も出てきます。
プログラミングGauche p.44には、ドットリスト(dotted list)、
正式なリスト(proper list)が紹介されています。
上記の問題は、Schemeでいうこの2種のリストが対応するようだ、
と考えたのですが、この理解で正しいでしょうか。
よろしくお願いします。
#Scheme の proper list は nil または cdr 部が proper list であるようなドット対のことです.
#IFPHの擬リストは⊥またはtail部が擬リストであるようなリストのことです.
#ここまでは似た論理構造ですが,擬リストの⊥はリストです.
#あれNicknameの最後の n が抜けた...
#返信ありがとうございます。
同書p.8, l.4によると
「特定の型の値としては定義されない値を表す特別な記号⊥
(底要素、bottom)を導入すると便利である」とあります。
またp.30, l.3には、
「ブール値に2つではなく3つの値、すなわち、False, True,⊥
があることになる。実際すべてのデータ型宣言では無名値
すなわちそのデータ型の未定義値が追加導入される。」
とあります。
頂いた返信の内容と合わせ、次のように考えました。
「⊥は特殊な値で、至る所に追加される。したがって、
data List α = Nil | Cons α (List α)
に含まれていなくても、⊥はリストとして扱われる」
この認識で正しいでしょうか。
よろしくお願いします。
#はい,すべての型は⊥を値として含みます.
#ありがとうございます。これで私の中で、全てクリアになりました。