generated at
パラメトリック多相
Genericsのこと
単一の関数が、複数の型で使用できる
実装は全く同じ、意味的にも同じ。型が異なるだけ。
わかりやすく最も単純な例は恒等関数 id
一つの式が持つ複数の型のパターンがパラメータを使って統一的に表せる
パラメトリック多相を使って型制約を施すときは、他の多相と関連付けて用いられたりする
サブタイピング多相と合わせて <T extends string> のように
静的なpolymorphism

パラメトリック多相のわかり易い例は恒等関数
これはどんな型の値を引数にとっても同じパターンでそれをそのまま返す
id :: a -> a
a の型が何かについて何も考えずに同じパターンを適用できる
動的型付きの言語にもそのまま代替できる感じ
これを無駄にoverloadで実装したとしても、名前が異なるだけで内部実装が全く同じ、という感じになる
hs
-- 許容する型はそれぞれ異なるが、実装は全く同じ idBool :: Bool -> Bool idBool a = a idInt :: Int -> Int idInt a = a
特殊状況でのAd Hoc多相とも見ることができる気がするmrsekut


型コンストラクタってパラメトリック多相とかって言ってもいい #??


ex.
Haskellの型変数
C++のtemplate
Javaのジェネリクス
Adaのgeneric
MLの型スキーム


関連