일부 언어는 유형 매개 변수가있는 클래스 및 함수 (예 : 임의 유형일 수있는 List<T>위치 T)를 허용합니다. 예를 들어 다음과 같은 기능을 가질 수 있습니다.
List<S> Function<S, T>(List<T> list)
그러나 일부 언어에서는이 개념을 한 단계 위로 확장하여 서명 기능을 가질 수 있습니다.
K<S> Function<K<_>, S, T>(K<T> arg)
어디 K<_>그 자체 것은 같은 유형의 List<_>그 유형 매개 변수가 있습니다. 이 "부분 유형"은 유형 생성자로 알려져 있습니다.
제 질문은 왜이 능력이 필요한가요? List<T>모든 List<T>것이 거의 동일 하기 때문에 같은 유형을 갖는 것이 합리적 이지만 모든 K<_>것은 완전히 다를 수 있습니다. 당신은 할 수 있습니다 Option<_>와 List<_>전혀 공통 기능이없는 것을.
FunctorLuis Casillas의 대답은 매우 직관적입니다. 무엇 List<T>과 Option<T>공통점? 당신이 나에게 하나 하나 기능을주는 경우에 T -> S나는 당신 줄 수있는 List<S>나에게 Option<S>. 그들이 공통적으로 갖는 또 다른 것은 당신 T이 둘 다 에서 가치 를 얻으려고 노력할 수 있다는 것 입니다.
IReadableHolder<T>.
IMappable<K<_>, T>하는 방법과 K<S> Map(Func<T, S> f)같이 구현, IMappable<Option<_>, T>, IMappable<List<_>, T>. 따라서 사용하지 않으려면 제한 K<T> : IMappable<K<_>, T>해야합니다.