使用Haskell的类型类,它似乎启用了特定情境下的多态,但它的函数声明看起来像参数化多态。我是否混淆了不同概念的理解?
使用Haskell的类型类,它似乎启用了特定情境下的多态,但它的函数声明看起来像参数化多态。我是否混淆了不同概念的理解?
事实上,Haskell支持(更高阶的)参数多态性和特定的(或有界的)多态性。Haskell中的参数多态性是通过其Hindley-Milner/System F类型系统支持的。通过类型类支持特定的多态性。
关于类型类和特定的多态性的起源,请参阅Wadler的论文:
关于参数多态性和特定的多态性之间的区别的起源,您可以查找Strachey的论文,