オレオレ型クラスの話をやめろ。原典に当たれ。ということで、Haskell に型クラスの導入を提案した論文とされる Philip Wadler. How to make ad-hoc polymorphism less ad hoc を読んだのでそれをまとめる話です。 型クラス導入の目的 2 つの多相 多相にはアドホック多相、パラメトリック多相の 2 つの種類がある。 アドホック多相 アドホック多相は、ある関数が受け入れる型によって 型に応じた振る舞いをするような多相 。典型的なのは関数や演算子のオーバーロード。
![型クラスの原点 How to make ad-hoc polymorphism less ad hoc を読んだ話 - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/74e8231c5cb310937148bfa5663b43b4b80a1dfd/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-9f5428127621718a910c8b63951390ad.png%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTkxNiZoPTMzNiZ0eHQ9JUU1JTlFJThCJUUzJTgyJUFGJUUzJTgzJUE5JUUzJTgyJUI5JUUzJTgxJUFFJUU1JThFJTlGJUU3JTgyJUI5JTIwSG93JTIwdG8lMjBtYWtlJTIwYWQtaG9jJTIwcG9seW1vcnBoaXNtJTIwbGVzcyUyMGFkJTIwaG9jJTIwJUUzJTgyJTkyJUU4JUFBJUFEJUUzJTgyJTkzJUUzJTgxJUEwJUU4JUE5JUIxJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9NTYmdHh0LWNsaXA9ZWxsaXBzaXMmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz01ODQ3ZTY1MmNjMzI3OGE5NjU2MjUyZDZjNTVjODM5OA%26mark-x%3D142%26mark-y%3D112%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTYxNiZ0eHQ9JTQwQmlhY2NvJnR4dC1jb2xvcj0lMjMyMTIxMjEmdHh0LWZvbnQ9SGlyYWdpbm8lMjBTYW5zJTIwVzYmdHh0LXNpemU9MzYmdHh0LWFsaWduPWxlZnQlMkN0b3Amcz1lYmFiNzg0MjMwNjQ5MWE2YjBkNzNlMGMwNDI5OTIxYQ%26blend-x%3D142%26blend-y%3D491%26blend-mode%3Dnormal%26s%3Dd2aa7c1860400a4b5ffdbb89e42f6e8c)