型クラス
概要
Wadlerによってで提案された言語機能
型クラスを使うことによって型階層とは別の切り口で型パラメータを修飾して限定できる
同じ処理名に型によって違う実装を持たせたい(オーバーロード)→意味を付与している
多相型(型パラメータ)の指定を意味が存在する型のみに限定したい
無制限に交差型を入れてしまうと型推論が決定不能になってしまう
→完全なオーバーロードに制限を加え、オーバーロードされた名前が取りうる型を制限された型スキームの形で表現する
オーバーロード解決ができるかはインスタンスかどうかを見ればいい
Scalaでいうと、実際に型クラスインスタンスをスコープから探してこれるかどうか?
多相性: 関数につく型が一つに制限されない
オーバーロード: 実装がつく型によって決定する
https://gyazo.com/3050db062816d230bef56374328e8ae4
参考