我从ghc为我的仆人库得到以下错误:
No instance for (GetEndpoint
(Verb 'GET 200 '[JSON] Position)
(Verb 'GET 200 '[JSON] Position)
'True)
arising from a use of `callServer3'
Run Code Online (Sandbox Code Playgroud)
但我在范围内有一个实例,看起来像这样:
instance GetEndpoint (Verb n s ct a) (Verb n s ct a) 'True where
getEndpoint _ _ _ _ server = server
Run Code Online (Sandbox Code Playgroud)
看起来就像一个ghc找不到的.我现在有点困惑.
完整代码可以在这里找到:
有线索吗?非常感谢任何提示!
给定的实例对于ns ct和a具有默认类型'*'.要么使用多种类型的n或正确的具体种类:
(Verb (n :: k1) (s :: Nat) (ct :: [*]) a)
Run Code Online (Sandbox Code Playgroud)
正确的实例如下所示:
instance GetEndpoint (Verb (n :: k1) (s :: Nat) (ct :: [*]) a) (Verb n s ct a) 'True where
getEndpoint _ _ _ _ server = server
Run Code Online (Sandbox Code Playgroud)
如果你不想启用PolyKinds(它引入了一堆其他错误),你可以使用StdMethodn 更多限制:
instance GetEndpoint (Verb (n :: StdMethod) (s :: Nat) (ct :: [*]) a) (Verb n s ct a) 'True where
getEndpoint _ _ _ _ server = server
Run Code Online (Sandbox Code Playgroud)
可在此处找到完整代码(编译甚至按预期工作).
再次感谢Carsten的快速帮助!