mkU*_*tra 5 polymorphism haskell types
阅读Wikipedia对多态的定义,我想到一个问题:
Haskell支持哪些多态类型,哪些不支持?
看起来Wikipedia并未包含对某些多态类型的描述,例如Levity Polymorphism,这对我来说是新的,在Haskell中受支持。
我想知道是否有扩展的Haskell多态性列表,并附带示例进行深入研究。
看起来主要是两个:
dan*_*iaz 14
当前的Haskell至少有四件事可以算作多态:
Haskell的未来版本中可能会引入两种以上的多态性:
匹配性多态性。允许高阶类型族同时使用类型构造函数和类型族作为参数。描述于Haskell的高阶类型级编程中。
多重性多态性。允许高阶函数同时使用普通函数和线性函数作为参数。在论文中描述了高阶多态语言中的线性Haskell实用线性。
有人可能会问,为什么整个多态性全貌?在Haskell中似乎存在一个总体设计原则,即只要可以通过子类型化或多态性解决某些挑战,就应该优先选择多态性。
例如,从高度多态性论文中:
现在,我们可以提出本文的主要思想:用种类多态性替换子种类。
从介绍匹配性多态性的论文中:
最初,您可能会认为我们需要子类型化,但是我们转向了多态性
从线性Haskell论文中:
缺乏子类型化是我们设计中的故意选择
西蒙·佩顿·琼斯(Simon Peyton Jones)本人在本次演讲中的47:00提出了意见。
每当您要使用子类型化时,请改用多态。
归档时间: |
|
查看次数: |
381 次 |
最近记录: |