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

Polymorphism (computer science)

Index 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. [1]

58 relations: Abstract data type, Abstract type, ACM Computing Surveys, Ad hoc, Ad hoc polymorphism, Association for Computing Machinery, Black box, Bounded quantification, Christopher Strachey, Common Lisp Object System, Covariance and contravariance (computer science), Curiously recurring template pattern, Data type, Duck typing, Dynamic dispatch, Function overloading, Functional programming, Fundamental Concepts in Programming Languages, Generic programming, Generics in Java, Haskell (programming language), Identity (object-oriented programming), Inheritance (object-oriented programming), Interface (computing), Jean-Yves Girard, John C. Reynolds, Lambda calculus, Late binding, Liskov substitution principle, List (abstract data type), Luca Cardelli, Multiple dispatch, Numerical tower, Object Pascal, Object-oriented programming, Operator overloading, Parametric polymorphism, Parametricity, Pascal (programming language), Peter Wegner, Polymorphic code, Programming language, Scheme (programming language), Simula, Static dispatch, Structural type system, Subroutine, Subtyping, System F, Template (C++), ..., Template metaprogramming, Type class, Type safety, Type system, Type theory, Virtual function, Virtual inheritance, Virtual method table. Expand index (8 more) »

Abstract data type

In computer science, an abstract data type (ADT) is a mathematical model for data types, where a data type is defined by its behavior (semantics) from the point of view of a user of the data, specifically in terms of possible values, possible operations on data of this type, and the behavior of these operations.

New!!: Polymorphism (computer science) and Abstract data type · See more »

Abstract type

In programming languages, an abstract type is a type in a nominative type system that cannot be instantiated directly; a type that is not abstract – which can be instantiated – is called a concrete type.

New!!: Polymorphism (computer science) and Abstract type · See more »

ACM Computing Surveys

ACM Computing Surveys (CSUR) is a peer reviewed scientific journal published by the Association for Computing Machinery.

New!!: Polymorphism (computer science) and ACM Computing Surveys · See more »

Ad hoc

Ad hoc is a Latin phrase meaning literally "for this".

New!!: Polymorphism (computer science) and Ad hoc · 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!!: Polymorphism (computer science) and Ad hoc polymorphism · See more »

Association for Computing Machinery

The Association for Computing Machinery (ACM) is an international learned society for computing.

New!!: Polymorphism (computer science) and Association for Computing Machinery · See more »

Black box

In science, computing, and engineering, a black box is a device, system or object which can be viewed in terms of its inputs and outputs (or transfer characteristics), without any knowledge of its internal workings.

New!!: Polymorphism (computer science) and Black box · See more »

Bounded quantification

In type theory, bounded quantification (also bounded polymorphism or constrained genericity) refers to universal or existential quantifiers which are restricted ("bounded") to range only over the subtypes of a particular type.

New!!: Polymorphism (computer science) and Bounded quantification · See more »

Christopher Strachey

Christopher S. Strachey (16 November 1916 – 18 May 1975) was a British computer scientist.

New!!: Polymorphism (computer science) and Christopher Strachey · See more »

Common Lisp Object System

The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp.

New!!: Polymorphism (computer science) and Common Lisp Object System · See more »

Covariance and contravariance (computer science)

Many programming language type systems support subtyping.

New!!: Polymorphism (computer science) and Covariance and contravariance (computer science) · See more »

Curiously recurring template pattern

The curiously recurring template pattern (CRTP) is an idiom in C++ in which a class X derives from a class template instantiation using X itself as template argument.

New!!: Polymorphism (computer science) and Curiously recurring template pattern · See more »

Data type

In computer science and computer programming, a data type or simply type is a classification of data which tells the compiler or interpreter how the programmer intends to use the data.

New!!: Polymorphism (computer science) and Data type · See more »

Duck typing

In computer programming, duck typing is an application of the duck test in type safety.

New!!: Polymorphism (computer science) and Duck typing · See more »

Dynamic dispatch

In computer science, dynamic dispatch is the process of selecting which implementation of a polymorphic operation (method or function) to call at run time.

New!!: Polymorphism (computer science) and Dynamic dispatch · See more »

Function overloading

In some programming languages, function overloading or method overloading is the ability to create multiple methods of the same name with different implementations.

New!!: Polymorphism (computer science) and Function overloading · 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!!: Polymorphism (computer science) and Functional programming · See more »

Fundamental Concepts in Programming Languages

Fundamental Concepts in Programming Languages were an influential set of lecture notes written by Christopher Strachey for the International Summer School in Computer Programming at Copenhagen in August, 1967.

New!!: Polymorphism (computer science) and Fundamental Concepts in Programming Languages · See more »

Generic programming

Generic programming is a style of computer programming in which algorithms are written in terms of types to-be-specified-later that are then instantiated when needed for specific types provided as parameters.

New!!: Polymorphism (computer science) and Generic 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!!: Polymorphism (computer science) 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!!: Polymorphism (computer science) and Haskell (programming language) · See more »

Identity (object-oriented programming)

An identity in object-oriented programming, object-oriented design and object-oriented analysis describes the property of objects that distinguishes them from other objects.

New!!: Polymorphism (computer science) and Identity (object-oriented programming) · See more »

Inheritance (object-oriented programming)

In object-oriented programming, inheritance is the mechanism of basing an object or class upon another object (prototypal inheritance) or class (class-based inheritance), retaining the same implementation.

New!!: Polymorphism (computer science) and Inheritance (object-oriented programming) · See more »

Interface (computing)

In computing, an interface is a shared boundary across which two or more separate components of a computer system exchange information.

New!!: Polymorphism (computer science) and Interface (computing) · See more »

Jean-Yves Girard

Jean-Yves Girard (born 1947) is a French logician working in proof theory.

New!!: Polymorphism (computer science) and Jean-Yves Girard · See more »

John C. Reynolds

John Charles Reynolds (June 1, 1935 – April 28, 2013) was an American computer scientist.

New!!: Polymorphism (computer science) and John C. Reynolds · 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!!: Polymorphism (computer science) and Lambda calculus · See more »

Late binding

Late binding, or dynamic binding, is a computer programming mechanism in which the method being called upon an object or the function being called with arguments is looked up by name at runtime.

New!!: Polymorphism (computer science) and Late binding · See more »

Liskov substitution principle

Substitutability is a principle in object-oriented programming 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 (i.e. an object of type T may be substituted with any object of a subtype S) without altering any of the desirable properties of the program (correctness, task performed, etc.). More formally, the Liskov substitution principle (LSP) is a particular definition of a subtyping relation, called (strong) behavioral subtyping, that was initially introduced by Barbara Liskov in a 1987 conference keynote address titled Data abstraction and hierarchy.

New!!: Polymorphism (computer science) and Liskov substitution principle · See more »

List (abstract data type)

In computer science, a list or sequence is an abstract data type that represents a countable number of ordered values, where the same value may occur more than once.

New!!: Polymorphism (computer science) and List (abstract data type) · 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!!: Polymorphism (computer science) and Luca Cardelli · See more »

Multiple dispatch

Multiple dispatch or multimethods is a feature of some programming languages in which a function or method can be dynamically dispatched based on the run-time (dynamic) type or, in the more general case some other attribute, of more than one of its arguments.

New!!: Polymorphism (computer science) and Multiple dispatch · See more »

Numerical tower

In Scheme and Lisp dialects inspired by it, a numerical tower is the set of data types that represent numbers in a given programming language.

New!!: Polymorphism (computer science) and Numerical tower · See more »

Object Pascal

Object Pascal refers to a branch of object-oriented derivatives of Pascal, mostly known as the primary programming language of Delphi.

New!!: Polymorphism (computer science) and Object Pascal · See more »

Object-oriented programming

Object-oriented programming (OOP) is a programming paradigm based on the concept of "objects", which may contain data, in the form of fields, often known as attributes; and code, in the form of procedures, often known as methods. A feature of objects is that an object's procedures can access and often modify the data fields of the object with which they are associated (objects have a notion of "this" or "self").

New!!: Polymorphism (computer science) and Object-oriented programming · See more »

Operator overloading

In programming, operator overloading, sometimes termed operator ad hoc polymorphism, is a specific case of polymorphism, where different operators have different implementations depending on their arguments.

New!!: Polymorphism (computer science) and Operator overloading · 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!!: Polymorphism (computer science) and Parametric polymorphism · See more »

Parametricity

In programming language theory, parametricity is an abstract uniformity property enjoyed by parametrically polymorphic functions, which captures the intuition that all instances of a polymorphic function act the same way.

New!!: Polymorphism (computer science) and Parametricity · 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!!: Polymorphism (computer science) and Pascal (programming language) · See more »

Peter Wegner

Peter A. Wegner (August 20, 1932 – July 27, 2017) was a computer scientist who made significant contributions to both the theory of object-oriented programming during the 1980s and to the relevance of the Church–Turing thesis for empirical aspects of computer science during the 1990s and present.

New!!: Polymorphism (computer science) and Peter Wegner · See more »

Polymorphic code

In computer terminology, polymorphic code is code that uses a polymorphic engine to mutate while keeping the original algorithm intact.

New!!: Polymorphism (computer science) and Polymorphic code · See more »

Programming language

A programming language is a formal language that specifies a set of instructions that can be used to produce various kinds of output.

New!!: Polymorphism (computer science) and Programming language · See more »

Scheme (programming language)

Scheme is a programming language that supports multiple paradigms, including functional programming and imperative programming, and is one of the two main dialects of Lisp.

New!!: Polymorphism (computer science) and Scheme (programming language) · See more »

Simula

Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard.

New!!: Polymorphism (computer science) and Simula · See more »

Static dispatch

In computing, static dispatch is a form of polymorphism fully resolved during compile time.

New!!: Polymorphism (computer science) and Static dispatch · See more »

Structural type system

A structural type system (or property-based type system) is a major class of type system, in which type compatibility and equivalence are determined by the type's actual structure or definition, and not by other characteristics such as its name or place of declaration.

New!!: Polymorphism (computer science) and Structural type system · See more »

Subroutine

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

New!!: Polymorphism (computer science) and Subroutine · See more »

Subtyping

In programming language theory, subtyping (also subtype polymorphism or inclusion polymorphism) is a form of type polymorphism in which 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.

New!!: Polymorphism (computer science) and Subtyping · 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!!: Polymorphism (computer science) and System F · See more »

Template (C++)

Templates are a feature of the C++ programming language that allows functions and classes to operate with generic types.

New!!: Polymorphism (computer science) and Template (C++) · See more »

Template metaprogramming

Template metaprogramming (TMP) is a metaprogramming technique in which templates are used by a compiler to generate temporary source code, which is merged by the compiler with the rest of the source code and then compiled.

New!!: Polymorphism (computer science) and Template metaprogramming · See more »

Type class

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

New!!: Polymorphism (computer science) and Type class · See more »

Type safety

In computer science, type safety is the extent to which a programming language discourages or prevents type errors.

New!!: Polymorphism (computer science) and Type safety · 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!!: Polymorphism (computer science) 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!!: Polymorphism (computer science) and Type theory · See more »

Virtual function

In object-oriented programming, in languages such as C++, and Object Pascal, a virtual function or virtual method is an inheritable and overridable function or method for which dynamic dispatch is facilitated.

New!!: Polymorphism (computer science) and Virtual function · See more »

Virtual inheritance

Virtual inheritance is a C++ technique that ensures only one copy of a base class's member variables are inherited by grandchild derived classes.

New!!: Polymorphism (computer science) and Virtual inheritance · See more »

Virtual method table

A virtual method table (VMT), virtual function table, virtual call table, dispatch table, vtable, or vftable is a mechanism used in a programming language to support dynamic dispatch (or run-time method binding).

New!!: Polymorphism (computer science) and Virtual method table · See more »

Redirects here:

Higher-rank polymorphism, Monomorphism (computer science), Overloading (programming), Parametric overloading, Polymorphic (computing), Polymorphic function, Polymorphic typing, Polymorphism (computer science, Polymorphism (object-oriented programming), Polymorphism in object-oriented programming, Polytypic function, Predicative polymorphism, Pure polymorphism, Reverse polymorphism, Run-time polymorphism, Type polymorphism.

References

[1] https://en.wikipedia.org/wiki/Polymorphism_(computer_science)

OutgoingIncoming
Hey! We are on Facebook now! »