Я хотел бы понять ключевое различие между параметрическим полиморфизмом, таким как полиморфизм общих классов/функций на языках Java/Scala/C++ и "ad-hoc" полиморфизма в системе типа Haskell. Я знаком с первым типом языков, но я никогда не работал с Haskell.
Точнее:
- Как алгоритм вывода типа, например, на Java отличается от вывода типа в Haskell?
- Пожалуйста, дайте мне пример ситуации, когда что-то может быть написано на Java/Scala, но не может быть написано в Haskell (в соответствии с модульными особенностями этих платформ тоже) и наоборот.
Заранее спасибо.