【问题标题】:What is Haskell's style of polymorphism?Haskell 的多态风格是什么?
【发布时间】:2011-04-17 04:18:42
【问题描述】:

使用 Haskell 的类型类,它似乎启用了临时多态性,但它的函数声明似乎是参数多态性。我是否混合了我对不同事物的理解?

【问题讨论】:

    标签: haskell functional-programming polymorphism type-systems


    【解决方案1】:

    确实,Haskell 支持(更高等级的)参数多态性和临时(或有界)多态性。 Haskell 中的参数多态性通过其 Hindley-Milner/System F 类型系统得到支持。通过类型类支持临时多态性。

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

    关于parametric多态性和ad hoc多态性区别的由来,可以去挖Strachey的论文,

    【讨论】:

    • 抱歉问题太幼稚了,Haskell 是否也提供其他形式的多态性?
    • 并非如此。它没有子类型,这将是主要的其他形式。
    • @Eli, Don 我认为值得一提的是,Haskell 的类型系统支持其他静态类型语言严重缺乏的高级多态性。更高等级通常也是其他语言的缺失特征。
    • @snk_kid,当我们这样做时,UHC 实现了 kind 多态性,如果 byorgey 的 typekind 工作实现,它也可能会出现在 GHC 中。 (注意:这在实践中(还)从未使用过,但非常酷。)
    猜你喜欢
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多