polymorphism
日本語
多相
多態
多型
多形
学術用語
生物学: 多型
多型 - Wikipedia
化学: 多形
多形 - Wikipedia
計算機科学: 多相、多態
ポリモーフィズム - Wikipedia
OOPのキモ
ここからはCSの話
#polymorphism は3種ある
parametric polymorphism
いわゆる generics
ad-hoc polymorphism
いわゆる overload
type class ともいう
隠しパラメーターによる polymorphism と言っても良いのでは?
Scala の implicit は これでは?
実装的にはそう
subtyping
いわゆる OOP的な継承のこと
一般的には nominal subtyping
structural subtyping もある
e.g. Elm, TypeScript
others
row polymorphism
ja. 行多態?
structural subtyping 前提?
record型 や polymorphic variants などに 使う。
record type ⊂ row type
e.g. SQLクエリの返し得るリレーションの型
ref. https://x.com/AtsushiOhori/status/1861615030950863007
ラベルと値の組は ざっくり 3種類
item = key:type
そのラベルがないことのマーカー
残り または 空白
additional items を許すか
ref. https://en.wikipedia.org/wiki/Row_polymorphism
polytypism
cf. PolyP
union of subtyping
union type
TypeScript など
tagged union
aka. polymorphic variants?
Scala など
ref.
https://developer.mozilla.org/ja/docs/Glossary/Polymorphism
https://en.wikipedia.org/wiki/Polymorphism_%28computer_science%29