haskell-jp / beginners #22 at 2022-11-01 19:03:44 +0900

パラメータ多相とアドホック多相の違いについて質問させてください。
自分の理解では、パラメータ多相は「いろんな型から利用でき、全く同じ動きをする多相性」で、アドホック多相は「いろんな型から利用でき、それぞれで動きが異なる多相性」のことだと思っています。
この認識はあっていますでしょうか?

また、上記の認識と今まで見てきた情報を総括して個人的なイメージとして「Haskellはパラメータ多相、JavaとかC++などのクラスベースオブジェクト指向はアドホック多相」という風に思っていました。(こういう紹介をしていた情報源もどこかで見たことがあった気がしています。)
ですが、例えばジェネリクスを使って型Aの変数をそのまま返す関数を作れば、これはパラメータ多相っぽいのでは?と思いました。
また、`fmap`はそれを実装したい型ごとに instance 構文でそれぞれの型用の動きを記述するため、`fmap`はアドホック多相っぽいような気がしています。
そうなりますとパラメータ多相やアドホック多相は関数型やオブジェクト指向などの考え方とは独立したものになる感じでしょうか?
手抜き回答ですみませんが、多相について書いてみた手前のブログ記事があって、理解の一助になるかと思います
分からない箇所があれば気兼ねなく聞いてください!
https://kakkun61.hatenablog.com/entry/2021/03/18/%E5%A4%9A%E7%9B%B8%E3%81%8B%E3%82%89%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E8%A8%80%E8%AA%9E%E3%82%92%E8%A6%8B%E3%82%8B
ありがとうございます!
記事拝見させていただきました!自分の疑問に思っていた箇所についてすっきり解消できた気がします。
また部分型多相の存在を初めて知りまして、自分の思っていたJava, C++の多相性はこのイメージが強かったです。そういうこともはっきりしてよかったです。
ひとまずご提示くださった記事について理解できたように思います!ありがとうございました!