ボトム型とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > ボトム型の意味・解説 

ボトム型

(Bottom type から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/03/31 00:42 UTC 版)

ボトム型(ボトムがた、: Bottom type)とは、型理論数理論理学において値を持たない型のことである。ロ型またはとも呼ばれ、アップタック記号(⊥)で表記される。戻り値の型がボトム型である関数は、いかなる値も返さない。カリー=ハワード同型対応ではボトム型は偽に対応する。

計算機科学への応用

部分型付けシステムにおいて、ボトム型はすべての型の部分型である[1] 。(ただしその逆は成り立たない。つまり、すべて型の部分型が必ずしもボトム型であるとはいえない。)値を返さない関数(例えば無限ループや例外の送出、プログラムの終了など)の戻り値の型を表すのに使われる。

ボトム型は正常な返却ではないことを示すために使用されるので、普通は一切の値を持たない。これとは対照的にトップ型はシステム上可能なすべての値におよび、また、ユニット型はただ1つの値を持つ。ボトム型はいわゆるVoid型と混同されることがあるが、Void型に対してどんな操作も定義されないとはいえ、Void型は実際にはユニット型である。

ボトム型は次のような目的でよく使用される。

  • 関数または計算が発散、つまり呼び出し側に結果を返さないことを知らせるため。 (これは必ずしもプログラムが終了に失敗することを意味するわけではない。サブルーチンは呼び出し側へ戻ることなく終了したり、継続のような他の手段によって脱出する可能性がある。)
  • エラーを表すため。この利用法は主に、エラーを区別することが重要でない、理論色の強いプログラミング言語で見られる。産業色の強いプログラミング言語では、一般的にオプション型(タグ付きポインタを含む)や例外処理などの他の手法を使う。

プログラミング言語での使用

一般的に使用される多くのプログラミング言語は空の型を明示的に表す手段を持たないが、いくつかの例外もある。

Haskellは空のデータ型をサポートしていない。しかし、GHCでは-XEmptyDataDeclsフラグによってdata Emptyを(コンストラクタなしで)定義できるようになる。Empty型は非終端プログラムおよび定数undefinedを含むため、完全に空というわけではない。 一般的にundefinedは何かが空の型を持ってほしいときに使用される。なぜならundefinedはどんな型にもマッチし(つまりすべての型の部分型)、undefinedを評価しようとするとプログラムの中止を引き起こし、それゆえ永久に応答を返さないからである。

Common Lispではシンボル NILが値を持たない型である。これはトップ型のTと対をなす。NILはしばしばNULLと混同されることがあるが、NULLはただ1つの値すなわちNILを持つ型である。

Scalaではボトム型はNothingで表される。例外をスローしたり正常に戻らない関数で使われるのに加え、共変なパラメタ化された型でも使用される。 例としてScalaのリストは共変なので、全ての型AについてList[Nothing]List[A]の部分型である。そのため、Scalaであらゆる型のリストの終端を表すNilList[Nothing]型である。

Rustではボトム型は!で表されていた。Rust 2018エディションからは、識別子の最後に!が置かれているならばマクロと見做し、引数などとともにマクロ展開を行う演算子となった。

Ceylonのボトム型はNothingである[2] 。これはScalaのNothingに似ており、他の全ての型の交差型を表し、また空の集合を表す。

脚注

  1. ^ Pierce, Benjamin C. (1997). Bounded Quantification with Bottom. 
  2. ^ Chapter 3. Type system — 3.2.5. The bottom type”. The Ceylon Language. Red Hat, Inc.. 2017年2月19日閲覧。

参考文献

関連項目





英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「ボトム型」の関連用語

ボトム型のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



ボトム型のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのボトム型 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS