haskell - 是否存在与类型类相关的运行时惩罚?

标签 haskell typeclass

标题几乎总结了我的问题:是否存在与 Haskell 的类型类相关的运行时惩罚,或者它只是其中之一(如幻像类型)而没有任何运行时后果?

最佳答案

需要一个类型类就像将一个额外的参数传递给包含类型类成员作为数据结构的函数,因为在幕后,这就是它在 GHC 中脱糖的内容。

也就是说,GHC 非常擅长内联和专门化使用类型类的代码,以至于它没有问题,使用 -O2 很大一部分它们会消失,但即使没有那种优化级别,传递参数也很便宜.

所以开销不仅仅是幻像类型或新类型,但它不是很高。

顺便说一句,其他编译器的开销可能会有所不同。例如JHC 使用有限形式的依赖类型有效地对类型构造函数执行案例分析,因此在 JHC 中工作时,您需要为受约束的类型变量的数量而不是约束的数量付费。

关于haskell - 是否存在与类型类相关的运行时惩罚?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10148897/

相关文章:

haskell - Haskell 中的可选参数

haskell - 我可以从函数依赖中魔术出类型相等吗?

haskell - 使 (a, a) 成为仿函数

haskell - Clojure - 按返回类型分派(dispatch)? (与 Haskell 类型类一样富有表现力)

haskell - 在 Haste 中,是否可以使用 RPC 从服务器调用客户端代码?

haskell - 为什么没有 'foreign import prim unsafe'?

haskell - 是否无法计算 Enum 类型的 maxBound 和 minBound 之间的差异?

haskell - liftM 可以与 liftA 不同吗?

scala - 无法在 Scala 工作表中的伴生对象内找到隐式值

haskell - 在 Haskell 中以无点风格使用 curry 的声明问题