Ograniczonym ilościowe - Bounded quantification
W teorii typu , ograniczony ilościową (również ograniczonym polimorfizmem lub ograniczone genericity ) dotyczy uniwersalnych lub kwantyfikatorów egzystencjalnych które są ograniczone ( „ograniczony”), które wahają się tylko nad podtypami określonego typu. Ograniczonym kwantyfikacja jest oddziaływanie parametrycznej polimorfizmu z podtypy . Ograniczonym ilościowe tradycyjnie badano w funkcjonalnej ustawienia systemu F <: , ale jest dostępna w nowoczesnych języków obiektowych wspierających parametrycznych polimorfizmu ( rodzajowych ), takich jak Java , C # i Scala .
Zawartość
Przegląd
Celem ograniczonego kwantyfikacji jest umożliwienie funkcje polimorficzne zależeć od jakiegoś określonego zachowania obiektów zamiast typu dziedziczenia . Zakłada ona, model oparty na rekordowy klas obiektów, gdzie każdy element jest elementem klasy rekord i wszyscy członkowie klasy są nazwane funkcje. Atrybuty obiektu są reprezentowane jako funkcji, które mają żadnego dowodu i powrót obiekt. Specyficzne zachowanie jest wtedy jakiś nazwa funkcji wraz z typami argumentów i typ zwracany. Ograniczonym ilościowa pozwala uważa wszystkie obiekty o takiej funkcji. Przykładem może być polimorficzne min
funkcja uważa wszystkich obiektów, które są ze sobą porównywalne.
F-ilościowe ograniczone
F -bounded ilościowe lub rekurencyjnie ograniczony kwantyfikacji , wprowadzony w 1989 roku, pozwala na bardziej precyzyjne pisanie funkcji, które są stosowane na rekurencyjnych typów. Cykliczna jest typu, który zawiera funkcję, która używa jako pewnego rodzaju argumentu lub wartość powrotną.
Przykład
Ten rodzaj typu ograniczenia mogą być wyrażone w języku Java z rodzajowego interfejsu. Poniższy przykład pokazuje, jak opisać typy, które mogą być porównywane ze sobą i używać tego jako wpisując informacje w funkcji polimorficznych . Test.min
Funkcja używa prostego ograniczone ilościowe i nie zachowuje typ przypisanych typów, w przeciwieństwie do Test.Fmin
funkcji, która wykorzystuje F-ograniczony kwantyfikacji.
W zapisie matematycznym, rodzaje tych dwóch funkcji są
- min: ∀ T ∀ S ⊆ {compareTo T → Int}. → S S S →
- Fmin: ∀ T ⊆ porównawczych [t]. T → T → T
gdzie
- Porównywalne [T] = {compareTo T → Int}
interface Comparable<T> {
public int compareTo(T other);
}
class Integer implements Comparable<Integer> {
@Override
public int compareTo(Integer other) {
//...
}
}
class String implements Comparable<String> {
@Override
public int compareTo(String other) {
//...
}
}
class Test {
public static void main(String[] args) {
Comparable<String> a = min("cat", "dog");
Comparable<Integer> b = min(new Integer(10), new Integer(3));
String str = Fmin("cat", "dog");
Integer i = Fmin(new Integer(10), new Integer(3));
}
public static <S extends Comparable> S min(S a, S b) {
if (a.compareTo(b) <= 0)
return a;
else
return b;
}
public static <T extends Comparable<T>> T Fmin(T a, T b) {
if (a.compareTo(b) <= 0)
return a;
else
return b;
}
}
Zobacz też
- Kowariancji i kontrawariancja (computer science)
- Co ciekawe powtarzający się wzór szablonu
- Wieloznaczny (Java)
Uwagi
Referencje
- Cardelli Luca ; Wegner, Piotr (grudzień 1985). „Na Zrozumienie typów danych abstrakcji i Polimorfizm” (PDF) . Sondaże ACM Computing . New York, NY, USA: ACM . 17 (4): 471 & ndash, 523. doi : 10,1145 / 6041,6042 . ISSN 0360-0300 .
- Peter S. Canning , William R. Cooka , Walter L. Hill , John C. Mitchell i William Olthoff . „F-ograniczony polimorfizm programowania obiektowego” . W konferencji na temat języków programowania funkcyjnego i Computer Architecture 1989.
- Benjamin C. Pierce „typy skrzyżowania i polimorfizm ograniczonym”. Lecture Notes in Computer Science 664 , 1993.
- Gilad Bracha , Martin Odersky , David Stoutamire i Philip Wadler . „Making przyszłość bezpieczna dla ostatniego: Dodawanie genericity do języka programowania Java”. W obiektowego Programowanie: Systems, języki, Aplikacje (OOPSLA). ACM, październik 1998 r. W
- Andrew Kennedy i Don Syme . „Opracowanie i wdrożenie rodzajowych dla .NET Common Language Runtime”. W Programming Language Projektowania i Realizacji 2001r.
- Pierce Benjamin C. (2002). Rodzaje i Języki programowania . MIT Press. ISBN 0-262-16209-1 .Rozdział 26: Ograniczone kwantyfikacji
Linki zewnętrzne
- Ograniczonym Polimorfizm w deseń Repository Portland
- „F-ograniczony polimorfizm” w The Cecil Język: Specyfikacja i uzasadnienie