Haskell的多态风格是什么?

26

使用Haskell的类型类,它似乎启用了特定情境下的多态,但它的函数声明看起来像参数化多态。我是否混淆了不同概念的理解?

1个回答

32

事实上,Haskell支持(更高阶的)参数多态性和特定的(或有界的)多态性。Haskell中的参数多态性是通过其Hindley-Milner/System F类型系统支持的。通过类型类支持特定的多态性。

关于类型类和特定的多态性的起源,请参阅Wadler的论文:

关于参数多态性和特定的多态性之间的区别的起源,您可以查找Strachey的论文,


抱歉问一些幼稚的问题,但 Haskell 还提供其他形式的多态性吗? - Eli Schneider
1
不完全是。它没有子类型,这将是另一种主要形式。 - Don Stewart
2
@Eli,Don 我认为值得一提的是,Haskell的类型系统支持高阶多态,这在其他静态类型语言中严重缺乏。高阶多态通常也是其他语言的一个缺失特性。 - snk_kid
1
@snk_kid,顺便说一下,UHC实现了种类多态性,如果byorgey的类型种类工作实现,它也可能出现在GHC中。(注:这在实践中从未被使用过(但非常酷)。) - Darius Jahandarie

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接