利用者:Wicklo/トップ型
![]() |
ここはWickloさんの利用者サンドボックスです。編集を試したり下書きを置いておいたりするための場所であり、百科事典の記事ではありません。ただし、公開の場ですので、許諾されていない文章の転載はご遠慮ください。
登録利用者は自分用の利用者サンドボックスを作成できます(サンドボックスを作成する、解説)。 その他のサンドボックス: 共用サンドボックス | モジュールサンドボックス 記事がある程度できあがったら、編集方針を確認して、新規ページを作成しましょう。 |
トップ型(英: Topy type)とは、数学、 論理学、計算機科学の型理論において、全ての型の共通の上位型であるような型のことである。任意の型システムが与えられたとき、トップ型以外のすべての型はトップ型の部分型である。ダウンタック記号(⊤)を用いて表記する。 ほとんどの場合で含有するべきオブジェクトの型システムです。 対照的に、ボトム型はすべての型の共通の部分型であり、 ユニバーサルサブタイプ、他のすべての型のスーパータイプの、普通はいかなる値も持たない。
プログラミング言語でのサポート
[編集]複数の型のあるプログラミング言語でトップ型の明示的なサポートを提供している。
静的型付け言語では、トップ型について議論するとき、2つの異なる混乱しがちなコンセプトがある。
- すべてのクラスの基底クラス、または 実行時にクラス階層の最上位に位置する項目(しばしば関連する オブジェクト指向プログラミング)または 階層型での多くをこのオブジェクト(実行時間型、またはこれが一つの階層型プログラムにより、言語を支えて下さっている
- (コンパイル時間) 静的な型のコードが変数に割り当てることができ、任意の値(またはサブセットし、そのようなオブジェクトのポインタ値と同様の 動的タイピング
前者は後者を伴うことが多い。すなわち、ユニバーサルベースのクラスが存在し、その変数にすることはできるこのクラスのオブジェクトでもポイントオブジェクトのクラスです。 しかし、複数の言語の種類に関し上記( void*
C++では、 id
でのObjective-Cには、 インタ{}
に行き)は、静止型変数を受け入れのanyオブジェクトに価値が影響を及ぼさない実行時間型オブジェクトでは、タイプシステムではトップの種類に初ています。
動的型付け言語には後者のようなコンセプトは存在しない(そもそも任意の変数に任意の値を割り当てることができる)。そのため専ら前者(クラス階層)について議論される。本記事ではするアイドルとの初のコンセプトを議論するが、プログラミン言語のなかで後者のコンセプトが重要な場合はそれについても言及する。
Name | Languages |
---|---|
Object
|
Smalltalk、JavaScript、Ruby (1.9.2以前)[1]など。 |
java.lang.Object
|
Java。普通はパッケージプレフィックスを省略してObject と書く。これはプリミティブ型の上位型ではない。Java 1.5からはオートボクシングによって暗黙的または明示的にプリミティブ型からObject へ型変換できる。例: |
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
|
Lisp、Common 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
に対応する。)
関連項目
[編集]脚注
[編集]- ^ “Class: BasicObject (Ruby 1.9.2)”. April 7, 2014閲覧。
- ^ System.
- ^ Python type/class unification
- ^ “An Overview of the Scala Programming Language” (2006年). April 7, 2014閲覧。
- ^ “Standard ECMA-367. Eiffel: Analysis, Design and Programming Language” (2006年). March 10, 2016閲覧。
参考文献
[編集]外部リンク
[編集][[Category:データ型]] [[Category:型理論]]