使用Haskell的类型类似乎它几乎可以实现ad hoc多态,但它的函数声明似乎是参数多态。我混合了对不同事物的理解吗?
答案 0 :(得分:31)
实际上,Haskell支持(更高级别)参数多态性和ad hoc(或有界)多态性。 Haskell中的参数多态通过其Hindley-Milner / System F类型系统得到支持。通过类型类支持Ad hoc多态。
关于类型类和ad hoc多态的起源,请参阅Wadler的论文:
对于参数和ad hoc多态的区别的起源,你可以挖掘Strachey的论文,