コンテンツにスキップ

利用者:Wicklo/トップ型

トップ型: Topy type)とは、数学論理学計算機科学型理論において、全ての型の共通の上位型であるような型のことである。任意の型システムが与えられたとき、トップ型以外のすべての型はトップ型の部分型である。ダウンタック記号(⊤)を用いて表記する。 ほとんどの場合で含有するべきオブジェクトの型システムです。 対照的に、ボトム型はすべての型の共通の部分型であり、 ユニバーサルサブタイプ、他のすべての型のスーパータイプの、普通はいかなる値も持たない。

プログラミング言語でのサポート

[編集]

複数の型のあるプログラミング言語でトップ型の明示的なサポートを提供している。

静的型付け言語では、トップ型について議論するとき、2つの異なる混乱しがちなコンセプトがある。

  1. すべてのクラスの基底クラス、または 実行時にクラス階層の最上位に位置する項目(しばしば関連する オブジェクト指向プログラミング)または 階層型での多くをこのオブジェクト(実行時間型、またはこれが一つの階層型プログラムにより、言語を支えて下さっている
  2. (コンパイル時間) 静的な型のコードが変数に割り当てることができ、任意の値(またはサブセットし、そのようなオブジェクトのポインタ値と同様の 動的タイピング

前者は後者を伴うことが多い。すなわち、ユニバーサルベースのクラスが存在し、その変数にすることはできるこのクラスのオブジェクトでもポイントオブジェクトのクラスです。 しかし、複数の言語の種類に関し上記( void* C++では、 id でのObjective-Cには、 インタ{} に行き)は、静止型変数を受け入れのanyオブジェクトに価値が影響を及ぼさない実行時間型オブジェクトでは、タイプシステムではトップの種類に初ています。

動的型付け言語には後者のようなコンセプトは存在しない(そもそも任意の変数に任意の値を割り当てることができる)。そのため専ら前者(クラス階層)について議論される。本記事ではするアイドルとの初のコンセプトを議論するが、プログラミン言語のなかで後者のコンセプトが重要な場合はそれについても言及する。

Most object-oriented programming languages include a universal base class:
Name Languages
Object SmalltalkJavaScriptRuby (1.9.2以前)[1]など。
java.lang.Object Java。普通はパッケージプレフィックスを省略してObjectと書く。これはプリミティブ型の上位型ではない。Java 1.5からはオートボクシングによって暗黙的または明示的にプリミティブ型からObject型変換できる。

例: ((Object)42).toString()

System.Object[2] C#Visual Basic .NET、その他の.NET Frameworkの言語
object Python since the type/class unification[3] in version 2.2 (new-style objects only; old-style objects in 2.x lack this as a base class)
TObject Object Pascal
t LispCommon Lispなど
Any Scala[4]
ANY Eiffel[5]
UNIVERSAL Perl 5
Variant Visual Basic バージョン6まで
interface{} Go
BasicObject Ruby (1.9.2以降)

以下のオブジェクト指向言語は共通の基底クラスを持たない

  • C++voidポインタは関数ポインタ以外の任意のポインタを受け入れる。
  • Objective-C:を作成することができる新しい基底クラスを指定せずに親クラスのクラスが、これは極めて異常です。 初期のObjective-CランタイムではObjectが基底クラスとして一般的に使われる。OpenStepおよびCocoaライブラリでは一般的にNSObjectが共通の基底クラスである。オブジェクトへのポインタのためのトップ型はidである。
  • Swift:を作成することができる新しい基底クラスを指定せずに親クラスのクラスです。Any は任意の型を受け入れることができる。
  • PHP

その他の言語

[編集]

非オブジェクト指向言語はふつう共通の上位型を持たないか、派生型多相をサポートしない。

論理学におけるトップ型

[編集]

トップ型の概念は命題論理にも見つけられる対応する式は、早く解釈します。これは述語論理での意味付けに似ている。Description logicではトップ型はすべての概念の集合である。 これは直感的にはトップ型プログラミング言語です。 例えば、 Webオントロジー言語(OWL)を支援する様々なdescription-ロジック、トップ型は owl:Thing に対応し、すべてのクラスは owl:Thing のサブクラスである。(ボトム型または空集合は owl:Nothing に対応する。)

関連項目

[編集]

脚注

[編集]
  1. ^ Class: BasicObject (Ruby 1.9.2)”. 2014年4月7日閲覧。
  2. ^ System.
  3. ^ Python type/class unification
  4. ^ An Overview of the Scala Programming Language” (2006年). 2014年4月7日閲覧。
  5. ^ Standard ECMA-367. Eiffel: Analysis, Design and Programming Language” (2006年). 2016年3月10日閲覧。

参考文献

[編集]
  • Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press. ISBN 0-262-16209-1 

外部リンク

[編集]

[[Category:データ型]] [[Category:型理論]]