3
4

1 回答 1

5

你的错误在

Just msg → return $ reply token msg "Testing!"

你是在

EitherT ServantErr IO Message

monad 但reply有类型

reply :: Token → Message → Text → IO Message

然后简单地lift把这个IO动作放到你的 monad 中,它就起作用了

postWebhook :: Token → Update → BotHandler Message
postWebhook token update = case message update of
  Just msg → lift $ reply token msg "Testing!"
  Nothing  → left err400

(对我来说解释这里所涉及的所有事情并不容易)我认为你应该在这些复杂的例子之前多练习一下 monads、transformers 等,但你很勇敢!:)

于 2016-02-11T14:13:07.537 回答