這可能是一個簡單的問題,我在SO上看到過類似的問題,但仍然卡住了。Snap Framework:我如何在處理程序中運行IO
我試圖做一個HTTP調用來拉入另一個博客的內容並將其顯示在我的頁面上。這比其他任何東西都更適合學習。
這裏是我的處理程序
blog :: App1Handler()
blog = do
contents <- Requester.getUrl "http://someblog.com/"
heistLocal (bindString "contents" contents) . render $ "blog"
Requester.getUrl已簽名的getURL ::字符串 - > IO T.Text
和錯誤我得到的回覆是
的src/Main.hs:50:15:
無法匹配預期類型Handler App1 App1 t0' with actual type
IO T.Text'
在返回類型的`的getURL呼叫的」
在的語句 '做' 塊:
內容< - 使用getURL 「http://someblog.com/」
在表達式:
做{內容< - 使用getURL 「http://someblog.com/」;
heistLocal(bindString「contents」contents)。渲染$「博客」}
從我收集,我被困在IO monad裏面,它想要類型Handler App1 App1 t0。我嘗試過將liftIO固定在某些地方,但我對此很困惑。
任何人都可以指向正確的方向嗎?
謝謝!
假設'App1Handler'是一個典型的支持'IO'的monad堆棧,它應該只是'contents < - liftIO $ Requester.getUrl「http://someblog.com/」'。你嘗試過嗎? – hammar
好吧,我會的。我完全困惑。我認爲,如果內容是IO(a)類型,那麼我想把'heistLocal(bindString「contents」)'放在它上面,就像一個函子一樣。感謝哈馬爾,我有一些閱讀要做。此外,我感謝你在這裏的所有答案 - 我一直在回答你已經回答的問題! – Brian