한정 수량화

Bounded quantification

유형 이론에서, 유계 수량화(유계 다형성 또는 제약된 일반성)는 특정 유형의 하위 유형에만 적용되도록 제한된(유계) 보편적 또는 실존적 수량화자를 의미한다.유계 정량화는 파라메트릭 다형성서브타이핑의 상호작용이다.유계량화는 전통적으로 시스템<: F기능적 설정에서 연구되어 왔지만 Java, C# 및 Scala같은 파라메트릭 다형(일반)을 지원하는 최신 객체 지향 언어에서 사용할 수 있습니다.

개요

유계 정량화의 목적은 다형 함수가 유형 상속 대신 객체의 특정 동작에 의존할 수 있도록 하는 것입니다.오브젝트 클래스의 레코드 베이스 모델을 전제로 하고 있습니다.여기서 모든 클래스 멤버는 레코드 요소이고 모든 클래스 멤버는 이름이 붙은 함수입니다.개체 속성은 인수를 사용하지 않고 개체를 반환하는 함수로 표시됩니다.특정 동작은 인수 유형 및 반환 유형과 함께 일부 함수 이름입니다.한정 수량화를 통해 이러한 함수를 가진 모든 객체를 고려할 수 있습니다.예를 들면 다형성일 것이다.min서로 비교할 수 있는 모든 개체를 고려하는 함수입니다.

F-바운드 정량화

1989년에 도입된 F-바운딩 정량화 또는 재귀적 한정 정량화를 통해 재귀적 유형에 적용되는 함수를 보다 정확하게 입력할 수 있습니다.재귀형이란 인수 또는 반환값의 [1]유형으로 사용하는 함수를 포함하는 유형입니다.

이러한 종류의 제약은 범용 인터페이스를 사용하여 Java로 표현될 수 있습니다.다음으로 서로 비교할 수 있는 유형을 기술하고 이를 다형 함수의 입력 정보로 사용하는 예를 나타냅니다.Test.min함수는 단순한 유계 정량화를 사용하며 할당된 유형의 유형을 보존하지 않습니다.Test.FminF-bound 정량화를 사용하는 함수.

수학 표기법에서, 두 함수의 유형은 다음과 같다.

min: t T 、 comp S { { compare To :T → int}.S → S → S
Fmin : t T compar [ T ]비교적 [T]T → T → T

어디에

Comparable[T] = {compareTo:T → int}
인터페이스 동등한< >T> {     일반의 인트 비교 대상(T 다른.); }  학급 정수 용구 동등한< >정수> {     @오버라이드     일반의 인트 비교 대상(정수 다른.) {         // ...     } }  학급 스트링 용구 동등한< >스트링> {     @오버라이드     일반의 인트 비교 대상(스트링 다른.) {         // ...     } }  학급 시험 {     일반의 정적인 무효 주된(스트링[] args) {         동등한< >스트링> a = ("고양이", '개');         동등한< >정수> b = (신규 정수(10), 신규 정수(3));         스트링 스트레이트 = Fmin("고양이", '개');         정수 i = Fmin(신규 정수(10), 신규 정수(3));     }     일반의 정적인 < >S 확장 동등한> S (S a, S b) {         한다면 (a.비교 대상(b) <=> 0)             돌아가다 a;         또 다른             돌아가다 b;     }     일반의 정적인 < >T 확장 동등한< >T>> T Fmin(T a, T b) {         한다면 (a.비교 대상(b) <=> 0)             돌아가다 a;         또 다른             돌아가다 b;     } } 

「 」를 참조해 주세요.

메모들

  1. ^ 객체 지향 프로그래밍을 위한 F 경계 다형성.캐닝, , 힐, 올트호프, 미첼.http://dl.acm.org/citation.cfm?id=99392

레퍼런스

  • Cardelli, Luca; Wegner, Peter (December 1985). "On Understanding Types, Data Abstraction, and Polymorphism" (PDF). ACM Computing Surveys. 17 (4): 471–523. CiteSeerX 10.1.1.117.695. doi:10.1145/6041.6042. ISSN 0360-0300.
  • 피터 S. 캐닝, 윌리엄 R. 요리사, 월터 L. , 존 C. 미첼, 그리고 윌리엄 올토프."객체 지향 프로그래밍을 위한 F-바운드 다형성형"기능 프로그래밍 언어와 컴퓨터 아키텍처에 관한 컨퍼런스, 1989.
  • 벤자민 C. "교차 유형 및 경계 다형성"을 뚫습니다.컴퓨터 사이언스 강의 노트 664, 1993.
  • 길라드 브라차, 마틴 오더스키, 데이비드 스타우타미어, 필립 와들러."과거의 미래를 안전하게 만드는 방법:Java 프로그래밍 언어에 일반성을 추가합니다."객체 지향 프로그래밍: 시스템, 언어, 애플리케이션(OOPSLA)ACM, 1998년 10월
  • 앤드류 케네디와 돈 셈.「용 제네릭스의 설계와 실장.NET 공통 언어 런타임"을 참조하십시오.Programming Language Design and Implementation, 2001.
  • Pierce, Benjamin C. (2002). Types and Programming Languages. MIT Press. ISBN 978-0-262-16209-8., 제26장 : 유계량화

외부 링크