Category
page 1Type theory
ordered pair
pair of mathematical objects; tuple of specific length (tuple length n=2)
assignable variable
storage location paired with a name, which contains a value
polymorphism
in programming languages and type theory, accessing different types using a common interface
𝑛-tuple
In mathematics, a tuple is a finite sequence (or ordered list) of numbers. More generally, it is a sequence of mathematical objects, called the elements of the tuple. An -tuple is a tuple of elements, where is a non-negative integer. There is only one 0-tuple, called the empty tuple. A 1-tuple and a 2-tuple are commonly called a singleton and an ordered pair, respectively. The term "infinite tuple" is occasionally used for "infinite sequences".
mathematical structure
combination of a set and an extra structure on it; more precisely, an object of a concrete category
type system
set of rules that assign a property called type to various constructs a computer program consists of, such as variables, expressions, functions or modules
abstract data type
mathematical model for data types
duck typing
style of dynamic, structural typing with lazy checking of objects' attributes
type theory
study of type systems in mathematical logic and computer science
prototype-based programming
style of object-oriented programming
type conversion
changing an expression from one data type to another
value
expression in computer science which cannot be evaluated further
inference typing
automatic detection of the data type of an expression in a programming language
unification
algorithmic process of solving equations between symbolic expressions
open/closed principle
a computer-programming principle that states that software entities (classes, modules, functions, etc.) should be open for extension, but closed for modification
Liskov substitution principle
object-oriented programming principle stating that, in a computer program, if S is a subtype of T, then objects of type T may be replaced with objects of type S without altering any of the desirable properties of the program (correctness, etc.)
Curry–Howard correspondence
the direct relationship between computer programs and mathematical proofs
enumerated type
data type consisting of an unordered set of named values
safe typing
property of a type system that prevents certain erroneous or undesirable program behaviours
void type
in programming languages, a keyword indicating the absence of data
algebraic data type
in computer programming, a type formed by combining other types
trait
computer programming
variance
relationship between a generic type or a function and a component type on subtyping
abstract type
type in a nominative type system that cannot be instantiated directly
dependent type
data type whose definition depends on a value
System F
typed lambda calculus
subtyping
In programming language theory, subtyping (also called subtype polymorphism or inclusion polymorphism) is a form of type polymorphism. A subtype is a datatype that is related to another datatype (the supertype) by some notion of substitutability, meaning that program elements (typically subroutines or functions), written to operate on elements of the supertype, can also operate on elements of the subtype.
type signature
defines the inputs and outputs for a function, subroutine or method
New Foundations
axiomatic set theory permitting set comprehension by stratified formulae, hence with a universal set, but in which the singleton map 𝑥↦{𝑥} fails to exist
intuitionistic type theory
alternative foundation of mathematics
recursive data type
data type that refers to itself in its definition
typed lambda calculus
typed formalism that uses the lambda-symbol (λ) to denote anonymous function abstraction
option type
encapsulation of an optional value in programming or type theory
homotopy type theory
variant of type theory incorporating the univalence axiom of Voevodsky
tagged union
data structure used to hold a value that could take on several different, but fixed, types
parametric polymorphism
basis of generic programming
type class
type system construct for ad-hoc polymorphism
Brouwer–Heyting–Kolmogorov interpretation
interpretation of intuitionistic logic
simply typed lambda calculus
formal system in mathematical logic
type erasure
process by which explicit type annotations are removed from a program
composite data type
any data type which can be constructed in a program using the programming language's primitive data types and other composite types
lambda cube
a framework
calculus of constructions
formal system
ad hoc polymorphism
applying polymorphic functions to arguments of different types
unit type
type allowing only one value in type theory
kind
type of types in a type system
type constructor
feature of a typed formal language that builds new types from old ones
combinatory categorial grammar
grammar formalism based on combinatory logic
Hindley–Milner
type system supporting type inference
Generalized algebraic data type
Concept in functional programming
bottom type
type that is the subtype of all other types; equivalent to the empty type if uninhabited
product type
algebraic term to describe the result of multiplying data types in type theory
categorial grammar
family of formalisms in natural language syntax motivated by the principle of compositionality and organized according to the view that syntactic constituents should generally combine as functions or according to a function-argument relationship