С классами типов в Haskell кажется, что он допускает специальный полиморфизм, но объявления его функций кажутся параметрическим полиморфизмом.Я смешиваю свое понимание разных вещей?
Действительно, Haskell поддерживает как параметрический полиморфизм (более высокого ранга), так и специальный (или ограниченный ) полиморфизм. Параметрический полиморфизм в Haskell поддерживается через систему типов Hindley-Milner / System F . Специальный полиморфизм поддерживается с помощью классов типов.
О происхождении классов типов и специального полиморфизма см. Работы Вадлера:
Для определения различия между параметрическим и специальным полиморфизмом вы можете найти документы Стрейчи,