Bounded quantification

From Infogalactic: the planetary knowledge core
Jump to: navigation, search

<templatestyles src="Module:Hatnote/styles.css"></templatestyles>

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. Bounded quantification is an interaction of parametric polymorphism with subtyping. Bounded quantification has traditionally been studied in the functional setting of System F<:, but is available in modern object-oriented languages supporting parametric polymorphism (generics) such as Java, C# and Scala.

Example

In the following Java sample the type parameter T is bounded to range only over I and its subclasses:

class I {
}

class A <T extends I> {
    public T id(T x) {
        return x;
    }
}

F-bounded quantification

F-bounded quantification or recursively bounded quantification, first explained in 1989, describes the case where subtype constraint itself is parameterized by one of the binders occurring on the left-hand side. [1]

Here is an application of this idiom in Java for a well-typed clone method:

abstract class I<T extends I<T>> {
  public T clone(T original);
}

class A extends I<A> {
    @Override
    public A clone(A original) {
       //...
    }
}

See also

References

External links

Notes

  1. F-bounded polymorphism for object-oriented programming. Canning, Cook, Hill, Olthof and Mitchell. http://dl.acm.org/citation.cfm?id=99392


<templatestyles src="Asbox/styles.css"></templatestyles>