Logo
Unionpedia
Communication
Get it on Google Play
New! Download Unionpedia on your Android™ device!
Install
Faster access than browser!
 

Hindley–Milner type system

Index Hindley–Milner type system

In type theory and functional programming, Hindley–Milner (HM), also known as Damas–Milner or Damas–Hindley–Milner, is a classical type system for the lambda calculus with parametric polymorphism, first described by J. Roger Hindley and later rediscovered by Robin Milner. [1]

73 relations: Abstract syntax, Ad hoc polymorphism, Aladdin, C (programming language), C++, Chair, Clothes line, Clothes valet, Completeness (logic), Consistency, Curry–Howard correspondence, Disjoint-set data structure, Equivalence class, EXPTIME, Fixed-point combinator, Formal grammar, Formal system, Functional programming, Generics in Java, Haskell (programming language), Identity function, Imperative programming, J. Roger Hindley, Java (programming language), John Alan Robinson, Judgment (mathematical logic), Kind (type theory), Ladder, Lambda calculus, Lattice (order), Leash, Lisp (programming language), Lua (programming language), Luca Cardelli, Magic carpet, ML (programming language), Monad (functional programming), Name binding, Natural language, NP-hardness, Occurs check, Parametric polymorphism, Parse tree, Partially ordered set, Pascal (programming language), Pathological (mathematics), Phrases from The Hitchhiker's Guide to the Galaxy, Polymorphism (computer science), Principal type, Prolog, ..., Python (programming language), Quicksort, Robin Milner, Rope, Rule of inference, Scripting language, Side effect (computer science), Simply typed lambda calculus, Subroutine, System F, System F-sub, Term (logic), Time complexity, Type class, Type inference, Type rule, Type signature, Type system, Type theory, Undecidable problem, Unification (computer science), Validity, Valuation (logic). Expand index (23 more) »

Abstract syntax

In computer science, the abstract syntax of data is its structure described as a data type (possibly, but not necessarily, an abstract data type), independent of any particular representation or encoding.

New!!: Hindley–Milner type system and Abstract syntax · See more »

Ad hoc polymorphism

In programming languages, ad hoc polymorphism is a kind of polymorphism in which polymorphic functions can be applied to arguments of different types, because a polymorphic function can denote a number of distinct and potentially heterogeneous implementations depending on the type of argument(s) to which it is applied.

New!!: Hindley–Milner type system and Ad hoc polymorphism · See more »

Aladdin

Aladdin (علاء الدين) is a folk tale of Middle Eastern origin.

New!!: Hindley–Milner type system and Aladdin · See more »

C (programming language)

C (as in the letter ''c'') is a general-purpose, imperative computer programming language, supporting structured programming, lexical variable scope and recursion, while a static type system prevents many unintended operations.

New!!: Hindley–Milner type system and C (programming language) · See more »

C++

C++ ("see plus plus") is a general-purpose programming language.

New!!: Hindley–Milner type system and C++ · See more »

Chair

A chair is a piece of furniture with a raised surface supported by legs, commonly used to seat a single person.

New!!: Hindley–Milner type system and Chair · See more »

Clothes line

A clothes line or washing line is any type of rope, cord, or twine that has been stretched between two points (e.g. two sticks), outside or indoors, above the level of the ground.

New!!: Hindley–Milner type system and Clothes line · See more »

Clothes valet

Clothes valet, also called men's valet, valet stand and suit stand, is an item of furniture on which clothes, particularly men's suits, may be hung.

New!!: Hindley–Milner type system and Clothes valet · See more »

Completeness (logic)

In mathematical logic and metalogic, a formal system is called complete with respect to a particular property if every formula having the property can be derived using that system, i.e. is one of its theorems; otherwise the system is said to be incomplete.

New!!: Hindley–Milner type system and Completeness (logic) · See more »

Consistency

In classical deductive logic, a consistent theory is one that does not contain a contradiction.

New!!: Hindley–Milner type system and Consistency · See more »

Curry–Howard correspondence

In programming language theory and proof theory, the Curry–Howard correspondence (also known as the Curry–Howard isomorphism or equivalence, or the proofs-as-programs and propositions- or formulae-as-types interpretation) is the direct relationship between computer programs and mathematical proofs.

New!!: Hindley–Milner type system and Curry–Howard correspondence · See more »

Disjoint-set data structure

In computer science, a disjoint-set data structure (also called a union–find data structure or merge–find set) is a data structure that tracks a set of elements partitioned into a number of disjoint (non-overlapping) subsets.

New!!: Hindley–Milner type system and Disjoint-set data structure · See more »

Equivalence class

In mathematics, when the elements of some set S have a notion of equivalence (formalized as an equivalence relation) defined on them, then one may naturally split the set S into equivalence classes.

New!!: Hindley–Milner type system and Equivalence class · See more »

EXPTIME

In computational complexity theory, the complexity class EXPTIME (sometimes called EXP or DEXPTIME) is the set of all decision problems that have exponential runtime, i.e., that are solvable by a deterministic Turing machine in O(2p(n)) time, where p(n) is a polynomial function of n. In terms of DTIME, We know and also, by the time hierarchy theorem and the space hierarchy theorem, that so at least one of the first three inclusions and at least one of the last three inclusions must be proper, but it is not known which ones are.

New!!: Hindley–Milner type system and EXPTIME · See more »

Fixed-point combinator

In computer science's combinatory logic, a fixed-point combinator (or fixpoint combinator) is a higher-order function fix that, for any function f that has an attractive fixed point, returns a fixed point x of that function.

New!!: Hindley–Milner type system and Fixed-point combinator · See more »

Formal grammar

In formal language theory, a grammar (when the context is not given, often called a formal grammar for clarity) is a set of production rules for strings in a formal language.

New!!: Hindley–Milner type system and Formal grammar · See more »

Formal system

A formal system is the name of a logic system usually defined in the mathematical way.

New!!: Hindley–Milner type system and Formal system · See more »

Functional programming

In computer science, functional programming is a programming paradigm—a style of building the structure and elements of computer programs—that treats computation as the evaluation of mathematical functions and avoids changing-state and mutable data.

New!!: Hindley–Milner type system and Functional programming · See more »

Generics in Java

Generics are a facility of generic programming that were added to the Java programming language in 2004 within version J2SE 5.0.

New!!: Hindley–Milner type system and Generics in Java · See more »

Haskell (programming language)

Haskell is a standardized, general-purpose compiled purely functional programming language, with non-strict semantics and strong static typing.

New!!: Hindley–Milner type system and Haskell (programming language) · See more »

Identity function

Graph of the identity function on the real numbers In mathematics, an identity function, also called an identity relation or identity map or identity transformation, is a function that always returns the same value that was used as its argument.

New!!: Hindley–Milner type system and Identity function · See more »

Imperative programming

In computer science, imperative programming is a programming paradigm that uses statements that change a program's state.

New!!: Hindley–Milner type system and Imperative programming · See more »

J. Roger Hindley

J.

New!!: Hindley–Milner type system and J. Roger Hindley · See more »

Java (programming language)

Java is a general-purpose computer-programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.

New!!: Hindley–Milner type system and Java (programming language) · See more »

John Alan Robinson

John Alan Robinson (9 March 1930 – 5 August 2016) was a philosopher, mathematician, and computer scientist.

New!!: Hindley–Milner type system and John Alan Robinson · See more »

Judgment (mathematical logic)

In mathematical logic, a judgment (or judgement) or assertion is a statement or enunciation in the metalanguage.

New!!: Hindley–Milner type system and Judgment (mathematical logic) · See more »

Kind (type theory)

In the area of mathematical logic and computer science known as type theory, a kind is the type of a type constructor or, less commonly, the type of a higher-order type operator.

New!!: Hindley–Milner type system and Kind (type theory) · See more »

Ladder

A ladder is a vertical or inclined set of rungs or steps.

New!!: Hindley–Milner type system and Ladder · See more »

Lambda calculus

Lambda calculus (also written as λ-calculus) is a formal system in mathematical logic for expressing computation based on function abstraction and application using variable binding and substitution.

New!!: Hindley–Milner type system and Lambda calculus · See more »

Lattice (order)

A lattice is an abstract structure studied in the mathematical subdisciplines of order theory and abstract algebra.

New!!: Hindley–Milner type system and Lattice (order) · See more »

Leash

A leash (also called a lead, lead line or tether) is a rope or similar material attached to the neck or head of an animal for restraint or control.

New!!: Hindley–Milner type system and Leash · See more »

Lisp (programming language)

Lisp (historically, LISP) is a family of computer programming languages with a long history and a distinctive, fully parenthesized prefix notation.

New!!: Hindley–Milner type system and Lisp (programming language) · See more »

Lua (programming language)

Lua (from meaning moon) is a lightweight, multi-paradigm programming language designed primarily for embedded use in applications.

New!!: Hindley–Milner type system and Lua (programming language) · See more »

Luca Cardelli

Luca Andrea Cardelli FRS is an Italian computer scientist who is an Assistant Director at Microsoft Research in Cambridge, UK.

New!!: Hindley–Milner type system and Luca Cardelli · See more »

Magic carpet

A magic carpet, also called a flying carpet, is a legendary carpet, and common trope in fantasy fiction.

New!!: Hindley–Milner type system and Magic carpet · See more »

ML (programming language)

ML (Meta Language) is a general-purpose functional programming language.

New!!: Hindley–Milner type system and ML (programming language) · See more »

Monad (functional programming)

In functional programming, a monad is a design pattern that defines how functions, actions, inputs, and outputs can be used together to build generic types, with the following organization.

New!!: Hindley–Milner type system and Monad (functional programming) · See more »

Name binding

In programming languages, name binding is the association of entities (data and/or code) with identifiers.

New!!: Hindley–Milner type system and Name binding · See more »

Natural language

In neuropsychology, linguistics, and the philosophy of language, a natural language or ordinary language is any language that has evolved naturally in humans through use and repetition without conscious planning or premeditation.

New!!: Hindley–Milner type system and Natural language · See more »

NP-hardness

NP-hardness (''n''on-deterministic ''p''olynomial-time hardness), in computational complexity theory, is the defining property of a class of problems that are, informally, "at least as hard as the hardest problems in NP".

New!!: Hindley–Milner type system and NP-hardness · See more »

Occurs check

In computer science, the occurs check is a part of algorithms for syntactic unification.

New!!: Hindley–Milner type system and Occurs check · See more »

Parametric polymorphism

In programming languages and type theory, parametric polymorphism is a way to make a language more expressive, while still maintaining full static type-safety.

New!!: Hindley–Milner type system and Parametric polymorphism · See more »

Parse tree

A parse tree or parsing tree or derivation tree or concrete syntax tree is an ordered, rooted tree that represents the syntactic structure of a string according to some context-free grammar.

New!!: Hindley–Milner type system and Parse tree · See more »

Partially ordered set

In mathematics, especially order theory, a partially ordered set (also poset) formalizes and generalizes the intuitive concept of an ordering, sequencing, or arrangement of the elements of a set.

New!!: Hindley–Milner type system and Partially ordered set · See more »

Pascal (programming language)

Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in 1968–69 and published in 1970, as a small, efficient language intended to encourage good programming practices using structured programming and data structuring. It is named in honor of the French mathematician, philosopher and physicist Blaise Pascal. Pascal was developed on the pattern of the ALGOL 60 language. Wirth had already developed several improvements to this language as part of the ALGOL X proposals, but these were not accepted and Pascal was developed separately and released in 1970. A derivative known as Object Pascal designed for object-oriented programming was developed in 1985; this was used by Apple Computer and Borland in the late 1980s and later developed into Delphi on the Microsoft Windows platform. Extensions to the Pascal concepts led to the Pascal-like languages Modula-2 and Oberon.

New!!: Hindley–Milner type system and Pascal (programming language) · See more »

Pathological (mathematics)

In mathematics, a pathological phenomenon is one whose properties are considered atypically bad or counterintuitive; the opposite is well-behaved.

New!!: Hindley–Milner type system and Pathological (mathematics) · See more »

Phrases from The Hitchhiker's Guide to the Galaxy

The Hitchhiker's Guide to the Galaxy is a comic science fiction series created by Douglas Adams that has become popular among fans of the genre(s) and members of the scientific community.

New!!: Hindley–Milner type system and Phrases from The Hitchhiker's Guide to the Galaxy · See more »

Polymorphism (computer science)

In programming languages and type theory, polymorphism (from Greek πολύς, polys, "many, much" and μορφή, morphē, "form, shape") is the provision of a single interface to entities of different types.

New!!: Hindley–Milner type system and Polymorphism (computer science) · See more »

Principal type

In type theory, a type system is said to have the principal type property if, given a term and an environment, there exists a principal type for this term in this environment, i.e. a type such that all other types for this term in this environment are an instance of the principal type.

New!!: Hindley–Milner type system and Principal type · See more »

Prolog

Prolog is a general-purpose logic programming language associated with artificial intelligence and computational linguistics.

New!!: Hindley–Milner type system and Prolog · See more »

Python (programming language)

Python is an interpreted high-level programming language for general-purpose programming.

New!!: Hindley–Milner type system and Python (programming language) · See more »

Quicksort

Quicksort (sometimes called partition-exchange sort) is an efficient sorting algorithm, serving as a systematic method for placing the elements of an array in order.

New!!: Hindley–Milner type system and Quicksort · See more »

Robin Milner

Arthur John Robin Gorell Milner (13 January 1934 – 20 March 2010), known as Robin Milner or A. J. R. G. Milner, was a British computer scientist, and a Turing Award winner.

New!!: Hindley–Milner type system and Robin Milner · See more »

Rope

A rope is a group of yarns, plies, fibers or strands that are twisted or braided together into a larger and stronger form.

New!!: Hindley–Milner type system and Rope · See more »

Rule of inference

In logic, a rule of inference, inference rule or transformation rule is a logical form consisting of a function which takes premises, analyzes their syntax, and returns a conclusion (or conclusions).

New!!: Hindley–Milner type system and Rule of inference · See more »

Scripting language

A scripting or script language is a programming language that supports scripts: programs written for a special run-time environment that automate the execution of tasks that could alternatively be executed one-by-one by a human operator.

New!!: Hindley–Milner type system and Scripting language · See more »

Side effect (computer science)

In computer science, a function or expression is said to have a side effect if it modifies some state outside its scope or has an observable interaction with its calling functions or the outside world besides returning a value.

New!!: Hindley–Milner type system and Side effect (computer science) · See more »

Simply typed lambda calculus

The simply typed lambda calculus (\lambda^\to), a form of type theory, is a typed interpretation of the lambda calculus with only one type constructor: \to that builds function types.

New!!: Hindley–Milner type system and Simply typed lambda calculus · See more »

Subroutine

In computer programming, a subroutine is a sequence of program instructions that performs a specific task, packaged as a unit.

New!!: Hindley–Milner type system and Subroutine · See more »

System F

System F, also known as the (Girard–Reynolds) polymorphic lambda calculus or the second-order lambda calculus, is a typed lambda calculus that differs from the simply typed lambda calculus by the introduction of a mechanism of universal quantification over types.

New!!: Hindley–Milner type system and System F · See more »

System F-sub

In the branch of mathematical logic known as type theory, System F<:, pronounced "F-sub", is an extension of system F with subtyping.

New!!: Hindley–Milner type system and System F-sub · See more »

Term (logic)

In analogy to natural language, where a noun phrase refers to an object and a whole sentence refers to a fact, in mathematical logic, a term denotes a mathematical object and a formula denotes a mathematical fact.

New!!: Hindley–Milner type system and Term (logic) · See more »

Time complexity

In computer science, the time complexity is the computational complexity that describes the amount of time it takes to run an algorithm.

New!!: Hindley–Milner type system and Time complexity · See more »

Type class

In computer science, a type class is a type system construct that supports ad hoc polymorphism.

New!!: Hindley–Milner type system and Type class · See more »

Type inference

Type inference refers to the automatic detection of the data type of an expression in a programming language.

New!!: Hindley–Milner type system and Type inference · See more »

Type rule

In type theory, a type rule is an inference rule that describes how a type system assigns a type to a syntactic construction.

New!!: Hindley–Milner type system and Type rule · See more »

Type signature

In computer science, a type signature or type annotation defines the inputs and outputs for a function, subroutine or method.

New!!: Hindley–Milner type system and Type signature · See more »

Type system

In programming languages, a type system is a set of rules that assigns a property called type to the various constructs of a computer program, such as variables, expressions, functions or modules.

New!!: Hindley–Milner type system and Type system · See more »

Type theory

In mathematics, logic, and computer science, a type theory is any of a class of formal systems, some of which can serve as alternatives to set theory as a foundation for all mathematics.

New!!: Hindley–Milner type system and Type theory · See more »

Undecidable problem

In computability theory and computational complexity theory, an undecidable problem is a decision problem for which it is known to be impossible to construct a single algorithm that always leads to a correct yes-or-no answer.

New!!: Hindley–Milner type system and Undecidable problem · See more »

Unification (computer science)

In logic and computer science, unification is an algorithmic process of solving equations between symbolic expressions.

New!!: Hindley–Milner type system and Unification (computer science) · See more »

Validity

In logic, an argument is valid if and only if it takes a form that makes it impossible for the premises to be true and the conclusion nevertheless to be false.

New!!: Hindley–Milner type system and Validity · See more »

Valuation (logic)

In logic and model theory, a valuation can be.

New!!: Hindley–Milner type system and Valuation (logic) · See more »

Redirects here:

Algorithm W, Damas-Hindley-Milner, Damas-Milner, Damas–Hindley–Milner, Damas–Milner, HM(X), Hindley-Damas-Milner theorem, Hindley-Milner, Hindley-Milner Type Inference, Hindley-Milner type inference, Hindley-Milner type inference algorithm, Hindley-Milner type system, Hindley-Milner typing, Hindley–Milner, Hindley–Milner type inference, Hindley–Milner type inference algorithm, Let generalization, Let polymorphism, Let-polymorphism, ML (type system), Milner-Hindley, Milner-Hindley type system.

References

[1] https://en.wikipedia.org/wiki/Hindley–Milner_type_system

OutgoingIncoming
Hey! We are on Facebook now! »