変性
#関数型プログラミング #型
https://ja.wikipedia.org/wiki/共変性と反変性
https://ja.wikipedia.org/wiki/共変性と反変性_(計算機科学) #計算機科学(CS)
https://ja.wikipedia.org/wiki/ベクトルの共変性と反変性
共変性と反変性は、圏論由来の用語である。この用語には以下の概念がある。
共変(covariant)は、派生 <: 基底 とすると、B <: A ならば I<B> <: I<A> になる。
反変(contravariant)は、共変のリバースであり、B <: A ならば I<A> <: I<B> になる。
双変(bivariant)は、互いに適用可能になり、B <: A ならば I<B> ≡ I<A> になる。
変性(variant)は、共変・反変・双変のどれかであることを指す。
非変(nonvariant)は、共変・反変・双変のどれでもないことを指す。
~
共変性と反変性はクラスの継承でよく用いられる。
関連
継承(プログラミング)
ポリモーフィズム
サブタイピング
---
TypeScript における変性(variance)について
/fsubal/bivarianceHack とは何か、なぜ必要なのか
Playing with contravariant functors in typescript
#(Type|ECMA|Java)Script
map、contramap、imapの整理
TCAのPullBack
#The_Composable_Architecture
@guvalif: フロントエンド民なので、contramap のわかりやすい応用例は Reducer 派なのだけど、他だと何がわかりやすいかなぁ🤔 (そもそも反変という概念がわかりづらいのもあるけど)
知名度低いところだと、Transducers とかも良きだけど
#Harvest
Harvest(副作用, Optics, データ構造)
#SwiftUI_時代の_Functional_iOS_Architecture
#Optics
#データ構造
https://scrapbox.io/files/64407027a30dd9001b3de06b.png