gpt4 book ai didi

haskell - 通用类型默认规则

转载 作者:行者123 更新时间:2023-12-02 21:10:37 24 4
gpt4 key购买 nike

Haskell's type-defaulting rules默认类型变量 a 具有约束 (C1 a,...,Cn a) 如果:

  • 类型变量a没有出现在其他约束中
  • 所有类Ci都是标准的。
  • 至少有一个类 Ci 是数字

这对我来说很有意义,但也非常有限:在实践中,这意味着当您使用自定义类时,当类型不明确时,您始终必须指定类型。例如,这不会编译:

class (Show a) => MyShow a where
myShow :: a -> String
myShow = show

instance (MyShow a) => MyShow (Maybe a) where
myShow Nothing = "Nothing"
myShow (Just x) = "Just " ++ (myShow x)

main = print $ myShow Nothing -- ambiguous

GHCi 通过以下方式扩展了这组规则:

  • 所有类Ci都是单参数类型类。
  • 至少有一个类 Ci 是数字,或者是 ShowEqOrd

GHC 有一个名为ExtendedDefaultRules 的扩展来启用这些规则。然而,这个扩展非常具体:它仅适用于 GHC 和标准类。例如,可以考虑不使用标准库的库。在这种情况下,GHCi 扩展将不起作用。

我的问题是:像 GHCi 那样扩展 Haskell 的类型默认规则的唯一方法是使用编译器扩展?更通用的是:有没有一种方法可以根据 Haskell 98 中的约束规则来定义类型默认?

最佳答案

没有办法做你想做的事。

目前的状况是有意而为之的。我们的想法是做一些最小的事情,当我们有一个好的设计时,可以在未来进行扩展。

关于haskell - 通用类型默认规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17837970/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com