더북(TheBook)

2.19 공변성과 반공변성을 알아야 함수끼리 대입할 수 있다

2.7.6절에서 타입 간 대입 가능성에 대해 배웠습니다. 이 절에서는 함수 간 대입 가능성에 대해 배우면서 공변성과 반공변성에 대한 개념을 알아보겠습니다.

어떤 함수는 다른 함수에 대입할 수 있는데, 어떤 함수는 대입할 수 없습니다. 이를 이해하려면 공변성과 반공변성이라는 개념을 알아야 합니다. 수학적 용어이므로 좀 어렵습니다만, 정리하면 다음과 같습니다.

공변성: A->B일 때 T<A> -> T<B>인 경우

반공변성: A->B일 때 T<B> -> T<A>인 경우

이변성: A->B일 때 T<A> -> T<B>도 되고 T<B> -> T<A>도 되는 경우

무공변성: A->B일 때 T<A> -> T<B>도 안 되고 T<B> -> T<A>도 안 되는 경우

추가로 이변성과 무공변성까지 같이 정리했습니다. 아직은 이해가 잘 되지 않아도 코드로 보면 이해하기 쉽기 때문에 조금 뒤에 나오는 코드와 함께 보세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.