現在、型クラスは Haskell のみならず、様々な言語で実装されたり似たようなものが実装されている言語機能です。 そういった風潮にも拘わらず、型クラスはどうにも大仰に捉えられがちに感じます。勿論、Haskell でも当初の仕様に比べると、最新の仕様はややこしいし、GHC の拡張や他機能と組み合わせるともっとややこしいのは事実ですが。 ということで、型クラスとはそもそもどういう motivation で発明、導入されたのか、簡単に調べてみます。 Haskell の型クラスは 1992 年の Haskell 1.2 で導入されました。1.2 のレポートに以下のような記述があるので間違ってないはず(他の言語でより早く実装されてるかもしれないけどそこまで調べてると時間なくなるので見ないふりをする。)。 Haskell is a large and complex language. design
![型クラスの歴史を軽くひも解く - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/ef390d3d6fe75d5fa8189c8bae016e434b326fae/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Farticle-ogp-background-412672c5f0600ab9a64263b751f1bc81.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9JUU1JTlFJThCJUUzJTgyJUFGJUUzJTgzJUE5JUUzJTgyJUI5JUUzJTgxJUFFJUU2JUFEJUI0JUU1JThGJUIyJUUzJTgyJTkyJUU4JUJCJUJEJUUzJTgxJThGJUUzJTgxJUIyJUUzJTgyJTgyJUU4JUE3JUEzJUUzJTgxJThGJnR4dC1hbGlnbj1sZWZ0JTJDdG9wJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmcz1hNmU4N2VhOTQxYTEyOTkyYjJmZTkyOTdjODY0MDFkYw%26mark-x%3D142%26mark-y%3D57%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9NzcwJnR4dD0lNDBseXJpY2FsX2xvZ2ljYWwmdHh0LWNvbG9yPSUyMzIxMjEyMSZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPTMwYTQxNDdmNDJlNjUxOTRjYjQ3YmJhYTZjNzU2Njgx%26blend-x%3D142%26blend-y%3D486%26blend-mode%3Dnormal%26s%3Dc2783f91e70f390a4847b5348b40665d)