【发布时间】:2018-12-29 00:01:20
【问题描述】:
class Foo t where
foo :: t
bar :: Binary t => t -> ()
bar = undefined
repro :: (Binary t, Foo t) => Proxy t -> ()
repro _proxy =
bar (foo :: t)
编译器抱怨:
由于使用“bar”而无法推断出 (Binary t0) 从上下文:(二进制 t,Foo t) 受类型签名的约束: 复制 :: forall t。 (二进制 t, Foo t) => 代理 t -> ()
无法推断 (Foo t2) 由使用“foo”引起 从上下文:(二进制 t,Foo t) 受类型签名的约束: 复制 :: forall t。 (二进制 t, Foo t) => 代理 t -> ()
具体来说,我很惊讶它没有看到我将t 传递给bar,并创建了一个t0 类型var。 t2 更加神秘,因为foo 被显式注释为t。
【问题讨论】:
标签: haskell