问题描述
|
使用Haskell的类型类,似乎几乎可以启用即席多态性,但是其函数声明似乎是参数多态性。我对不同事物的理解是否混在一起?
解决方法
实际上,Haskell支持(较高级别的)参数多态性和即席(或有界)多态性。 Haskell中的参数多态性通过其Hindley-Milner / System F类型系统得到支持。通过类型类支持临时多态性。
有关类型类的起源和临时多态性,请参阅Wadler的论文:
菲利普·沃德勒和斯蒂芬·布洛特,《如何减少即席多态性》。第16届编程语言原理研讨会,ACM出版社,德克萨斯州奥斯汀,1989年1月。
要了解参数多态性与即席多态性之间区别的起源,您可以查阅Strachey的论文,
C. Strachey,编程语言的基本概念。 1967年8月在哥本哈根国际计算机编程暑期学校的讲义