変性
共変性と反変性は、圏論由来の用語である。この用語には以下の概念がある。 共変(covariant)は、派生 <: 基底 とすると、B <: A ならば I<B> <: I<A> になる。
反変(contravariant)は、共変のリバースであり、B <: A ならば I<A> <: I<B> になる。
双変(bivariant)は、互いに適用可能になり、B <: A ならば I<B> ≡ I<A> になる。
変性(variant)は、共変・反変・双変のどれかであることを指す。
非変(nonvariant)は、共変・反変・双変のどれでもないことを指す。
~
共変性と反変性はクラスの継承でよく用いられる。
関連
---
@guvalif: フロントエンド民なので、contramap のわかりやすい応用例は Reducer 派なのだけど、他だと何がわかりやすいかなぁ🤔 (そもそも反変という概念がわかりづらいのもあるけど) 知名度低いところだと、Transducers とかも良きだけど
https://scrapbox.io/files/64407027a30dd9001b3de06b.png