【发布时间】:2015-04-09 03:09:43
【问题描述】:
考虑以下示例:
import Data.Constraint
class Bar a where
bar :: a -> a
foo :: (Bar a) => Dict (Bar a) -> a -> a
foo Dict = bar
在选择foo 中的Bar 实例时,GHC 有两个选择用于字典:它可以使用foo 上的Bar a 约束中的字典,或者它可以使用运行时Dict 来拿一本字典。有关字典对应于 不同 实例的示例,请参见 this question。
GHC 使用哪个字典,为什么它是“正确”的选择?
【问题讨论】: