Haskell支持哪些多态类型?

时间:2019-05-27 12:23:32

标签: haskell types polymorphism

阅读polymorphism的维基百科定义时,我遇到一个问题:

Haskell支持哪些多态类型,哪些不支持?

像Wikipedia这样的外观没有包含某些Levity Polymorphism等多态类型的描述,这对我来说是新的,在Haskell中受支持。

我想提供一个Haskell Polymorphism的扩展列表,并附带示例进行深入研究。

看起来主要两个是:

  • 参数多态性
  • 临时多态性

1 个答案:

答案 0 :(得分:9)

当前的Haskell中至少有四件事可以算作多态性:

Haskell的未来版本中可能会引入 两种其他类型的多态性:

一个人可能会问,为什么整个多态性全貌?在Haskell中似乎存在一个总体设计原则,即只要可以通过子类型化多态性解决某些挑战,就应该首选多态性

例如,来自高度多态性论文:

  

我们现在可以介绍本文的主要思想:替换子种类   具有多态性。

从介绍匹配性多态性的论文开始:

  

起初,您可能会认为我们需要子类型化,但是我们转向了多态性

从线性Haskell论文:

  

缺少子类型是我们设计中的故意选择

西蒙·佩顿·琼斯本人在47:00中的this talk上指出了重点。

  

每当要使用子类型化时,请改用多态。