Computer science applications
In subtyping systems, the bottom type is a subtype of all types. It is dual to thenull
is the only value of the null type; and it can be cast to any reference type. However, the null type is not a bottom type as described above, it is not a subtype of int
and other primitive types.
# A type system including both Top and Bot seems to be a natural target for In programming languages
Most commonly used languages don't have a way to denote the bottom type. There are a few notable exceptions. Inundefined
constant or terms created with the error
constructor may be assigned any type. Attempting to evaluate such an expression causes the code to abort unrecoverably.
In NIL
, contains no values and is a subtype of every type. The type named NIL
is sometimes confused with the type named NULL
, which has one value, namely the symbol NIL
itself.
In Scala, the bottom type is denoted as Nothing
. Besides its use for functions that just throw exceptions or otherwise don't return normally, it's also used for covariant parameterized types. For example, Scala's List is a covariant type constructor, so List othing/code> is a subtype of List /code> for all types A. So Scala's Nil
, the object for marking the end of a list of any type, belongs to the type List othing/code>.
In Rust
Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH ...
, the bottom type is called the never type and is denoted by !
. It is present in the type signature of functions guaranteed to never return, for example by calling panic!()
or looping forever. It is also the type of certain control-flow keywords, such as break
and return
, which do not produce a value but are nonetheless usable as expressions.
In Ceylon
Sri Lanka (, ; si, ශ්රී ලංකා, Śrī Laṅkā, translit-std=ISO (); ta, இலங்கை, Ilaṅkai, translit-std=ISO ()), formerly known as Ceylon and officially the Democratic Socialist Republic of Sri Lanka, is an ...
, the bottom type is Nothing
. It is comparable to Nothing
in Scala and represents the intersection of all other types as well as an empty set.
In Julia
Julia is usually a feminine given name. It is a Latinate feminine form of the name Julio and Julius. (For further details on etymology, see the Wiktionary entry "Julius".) The given name ''Julia'' had been in use throughout Late Antiquity (e.g. ...
, the bottom type is Union
.
In TypeScript
TypeScript is a free and open source programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are ...
, the bottom type is never
.
In JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
with Closure Compiler
Google Closure Tools is a set of tools to help developers build rich web applications with JavaScript. It was developed by Google for use in their web applications such as Gmail, Google Docs and Google Maps.
Closure Compiler
The Closure Comp ...
annotations, the bottom type is !Null
(literally, a non-null member of the Null
unit type
In the area of mathematical logic and computer science known as type theory, a unit type is a type that allows only one value (and thus can hold no information). The carrier (underlying set) associated with a unit type can be any singleton set. ...
).
In PHP
PHP is a general-purpose scripting language geared toward web development. It was originally created by Danish-Canadian programmer Rasmus Lerdorf in 1993 and released in 1995. The PHP reference implementation is now produced by The PHP Group ...
, the bottom type is never
.
In Python
Python may refer to:
Snakes
* Pythonidae, a family of nonvenomous snakes found in Africa, Asia, and Australia
** ''Python'' (genus), a genus of Pythonidae found in Africa and Asia
* Python (mythology), a mythical serpent
Computing
* Python (pro ...
, the bottom type is typing.NoReturn
(typing.Never
since version 3.11).
In Kotlin, the bottom type is Nothing
.
In D, the bottom type is noreturn
In Dart
Dart or DART may refer to:
* Dart, the equipment in the game of darts
Arts, entertainment and media
* Dart (comics), an Image Comics superhero
* Dart, a character from ''G.I. Joe''
* Dart, a ''Thomas & Friends'' railway engine character
* Dar ...
, since version 2.12 with th
sound null safety update
the Never
type was introduced as the bottom type. Before that, the bottom type used to be Null
.
See also
*Contradiction
In traditional logic, a contradiction occurs when a proposition conflicts either with itself or established fact. It is often used as a tool to detect disingenuous beliefs and bias. Illustrating a general tendency in applied logic, Aristotle's ...
*Fail-stop {{Unreferenced, date=June 2019, bot=noref (GreenC bot)
A fail-stop subset of a computer language is one that has the same semantics as the original, except in the case where an exceptional condition arises. The fail-stop subset must report an exce ...
*NaN
Nan or NAN may refer to:
Places China
* Nan County, Yiyang, Hunan, China
* Nan Commandery, historical commandery in Hubei, China
Thailand
* Nan Province
** Nan, Thailand, the administrative capital of Nan Province
* Nan River
People Given name
...
*Top type
In mathematical logic and computer science, some type theories and type systems include a top type that is commonly denoted with top or the symbol ⊤. The top type is sometimes called also ''universal type'', or ''universal supertype'' as all oth ...
*Unit type
In the area of mathematical logic and computer science known as type theory, a unit type is a type that allows only one value (and thus can hold no information). The carrier (underlying set) associated with a unit type can be any singleton set. ...
References
Further reading
*
{{DEFAULTSORT:Bottom Type
Data types
Type theory