دنبال کننده ها

۱۳۹۶ دی ۱۳, چهارشنبه

Servant Haskell: Why is the client tutorial producing a compile time error?

[ad_1]



I was working through this Servant tutorial and ran into an issue. I copied and pasted the code exactly but it does not compile.



The line below is throwing an error that, as a Haskell noob, I can't make heads or tails of.



Line:



getUsers :<|> getUser :<|> getPackages = client hackageAPI (BaseUrl Http "hackage.haskell.org" 80)


Error:



• Couldn't match type ‘ClientM [main:Main.UserSummary]
:<|> ((Text -> ClientM main:Main.UserDetailed)
:<|> ClientM [main:Main.Package])’
with ‘(String -> BaseUrl)
-> EitherT ServantError IO [main:Main.UserSummary]
:<|> ((main:Main.Username
-> EitherT ServantError IO main:Main.UserDetailed)
:<|> EitherT ServantError IO [main:Main.Package])’
Expected type: (String -> BaseUrl)
-> EitherT ServantError IO [main:Main.UserSummary]
:<|> ((main:Main.Username
-> EitherT ServantError IO main:Main.UserDetailed)
:<|> EitherT ServantError IO [main:Main.Package])
Actual type: Client main:Main.HackageAPI
• The function ‘client’ is applied to two arguments,
but its type ‘Proxy main:Main.HackageAPI
-> Client main:Main.HackageAPI’
has only one
In the expression:
client main:Main.hackageAPI (BaseUrl Http "hackage.haskell.org" 80)
In a pattern binding:
getUsers :<|> getUser :<|> getPackages
= client
main:Main.hackageAPI (BaseUrl Http "hackage.haskell.org" 80)
|
60 | getUsers :<|> getUser :<|> getPackages = client hackageAPI (BaseUrl Http "hackage.haskell.org" 80)
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^



[ad_2]

لینک منبع