L. *_*ers 4 haskell asynchronous yesod
我是Haskell和Yesod的新手,我正在尝试使用该Control.Concurrent.Async模块来做异步.(代码基于:https://hackage.haskell.org/package/async-2.1.1/docs/Control-Concurrent-Async.html#v : withAsync)
quizWidget = do
--Get first question
withAsync (showQuizItem 1 1 ) $ \qi -> do
withAsync (showScoreboard) $ \sb -> do
quizItem <- wait (qi)
scoreboard <- wait (sb)
toWidget $(hamletFile "hamlet/quiz.hamlet")
Run Code Online (Sandbox Code Playgroud)
但是这会产生以下错误:
"使用'toWidget'时没有(MonadWidget IO)的实例".
所以问题是我做错了什么?
异步包中的API是单态的,这意味着它仅适用于中的操作IO.您正尝试在WidgetT变换器类型中使用它,这是错误消息的来源.您可以使用lifted-async包,它提供withAsync函数的多态变体.在大多数情况下,这应该只是一个问题:
Control.Concurrent.Async.Liftedlifted-async你的build-depends