""没有实例错误 - 但实例存在(种类不匹配)

时间:2016-04-03 10:55:58

标签: haskell

我从ghc为我的仆人库收到以下错误:

{234}+{9,999999999}?

但我在范围内有一个实例,看起来像这样:

No instance for (GetEndpoint
                       (Verb 'GET 200 '[JSON] Position)
                       (Verb 'GET 200 '[JSON] Position)
                       'True)
arising from a use of `callServer3'

看起来就像ghc找不到的那个。我现在有点困惑。

完整代码可以在这里找到:

任何线索?非常感谢任何提示!

1 个答案:

答案 0 :(得分:5)

给定的实例有默认类型' *'对于n s ct和a。要么使用多种类型的n,要么使用正确的具体种类:

(Verb (n :: k1) (s :: Nat) (ct :: [*]) a)

正确的实例如下所示:

instance GetEndpoint (Verb (n :: k1) (s :: Nat) (ct :: [*]) a) (Verb n s ct a) 'True where
  getEndpoint _ _ _ _ server = server

如果你不想启用PolyKinds(它引入了一堆其他错误),你可以使用更受限制的StdMethod代表n:

instance GetEndpoint (Verb (n :: StdMethod) (s :: Nat) (ct :: [*]) a) (Verb n s ct a) 'True where
  getEndpoint _ _ _ _ server = server

可以找到完整代码(编译,甚至按预期工作)here

再次感谢Carsten的快速帮助!