t-shibata
パラメータ多相とアドホック多相の違いについて質問させてください。
自分の理解では、パラメータ多相は「いろんな型から利用でき、全く同じ動きをする多相性」で、アドホック多相は「いろんな型から利用でき、それぞれで動きが異なる多相性」のことだと思っています。
この認識はあっていますでしょうか?
また、上記の認識と今まで見てきた情報を総括して個人的なイメージとして「Haskellはパラメータ多相、JavaとかC++などのクラスベースオブジェクト指向はアドホック多相」という風に思っていました。(こういう紹介をしていた情報源もどこかで見たことがあった気がしています。)
ですが、例えばジェネリクスを使って型Aの変数をそのまま返す関数を作れば、これはパラメータ多相っぽいのでは?と思いました。
また、`fmap`はそれを実装したい型ごとに
そうなりますとパラメータ多相やアドホック多相は関数型やオブジェクト指向などの考え方とは独立したものになる感じでしょうか?
自分の理解では、パラメータ多相は「いろんな型から利用でき、全く同じ動きをする多相性」で、アドホック多相は「いろんな型から利用でき、それぞれで動きが異なる多相性」のことだと思っています。
この認識はあっていますでしょうか?
また、上記の認識と今まで見てきた情報を総括して個人的なイメージとして「Haskellはパラメータ多相、JavaとかC++などのクラスベースオブジェクト指向はアドホック多相」という風に思っていました。(こういう紹介をしていた情報源もどこかで見たことがあった気がしています。)
ですが、例えばジェネリクスを使って型Aの変数をそのまま返す関数を作れば、これはパラメータ多相っぽいのでは?と思いました。
また、`fmap`はそれを実装したい型ごとに
instance
構文でそれぞれの型用の動きを記述するため、`fmap`はアドホック多相っぽいような気がしています。そうなりますとパラメータ多相やアドホック多相は関数型やオブジェクト指向などの考え方とは独立したものになる感じでしょうか?