自分の理解のまとめです。ベースはWikipediaです。(Wikipedia日本語ページの記述は2017/3に英語ページの記述をもとに拡充されています。)論文や書籍を参照・引用してるわけではないので、たぶん突っ込みどころがあるのではないかと思います。うのみにしないように。 多相性 ざっくり3つに分類されています。 アドホック多相 サブタイピング多相 パラメトリック多相 __アドホック多相__は、型システム上は関連性のない複数の型を引数や戻り値にとることができる関数(メソッドや演算子を含む)の性質です。普通は引数や戻り値の型に応じて異なる実装にディスパッチされます。Javaで言うとオーバーローディングです。Javaのオーバーローディングだと、多相性を保ったまま第一級オブジェクトとして扱うことはできません(オーバーロードされたメソッドの参照を関数インターフェース型の変数に代入しようとすると、そ