このブログの更新は Twitterアカウント @m_hiyama で通知されます。
Follow @m_hiyama

メールでのご連絡は hiyama{at}chimaira{dot}org まで。

はじめてのメールはスパムと判定されることがあります。最初は、信頼されているドメインから差し障りのない文面を送っていただけると、スパムと判定されにくいと思います。

参照用 記事

レコードの型階層を合理的に説明できるか その2

前回(初回)わかったことは、レコードデータによって構成される型の階層は、データ(インスタンス)集合の包含関係ではうまく説明できないことです。実際のところ、データ集合の包含関係では型階層を表現できません。

型階層を定義する正統派(と僕が思う)方法は、指標やセオリーの概念を使う方法でしょう(その概略は、メモ編に書いておきました)。しかし、今回はそのような方法を採用しません

採用しない最初の理由は、とにかく大げさすぎることです。二番目の(より重要と思われる)理由は、指標/セオリーを用いる方法は静的な型チェックに対応するので、JavaScriptのように型が動的に変動してしまう状況を扱いにくいことです。三番目の理由は、指標/セオリーでは僕が経験した奇妙な現象や不毛な議論(苦笑)を説明できないことです。

ではどうするか、というと、JavaScriptの「存在しないフィールドの値は未定義とみなす」という原理を採用します。ただし、「未定義 = undefined値」と考えるわけではありません。「『値が未定義』とは何であるか」を再考することになります。当然ながら、「未定義とは何であるか?」のような思弁的な問には答がいくつもありますし、どれが正解とも断定しがたいのです。

“未定義の定義”ごとに、型や型階層の概念が少しずつ違ってきます。それらは並列に存在する異なった定式化であり、優劣を論じても生産的ではありません。無理に優劣を付けようとすると、不毛な議論になるわけです。

と、前置きしただけで、またしても「続く」。