0
我正在使用HDBC-Sqlite3,我想根據頁面進行查詢。我想從IO Monad中獲取數據。這應該是可能的,因爲「get」已經不是純粹的。一般來說,Haskell是如何完成的?提取其他Monad中的IO數據
main = do
conn <- connectSqlite3 "test.db"
scotty 3000 $ do
get "/" $ do
x <- quickQuery' conn "SELECT * from definitions" [] -- Here, how to do it?
blaze $ Mathskell.Views.Read.render conn
問題是,我在一個「做」,其中Monad是ActionM而不是IO。
我想過從IO構建一個ActionM,然後使用x語言,這是一個很好的解決方案嗎? 我也看到了liftIO/liftM的存在,但我不知道如何/何時使用它。
謝謝,它的工作原理。但奇怪的是,它需要一個「;」在「x < - ...」行末尾,否則他認爲它只是一個語句,最後一個語句需要是一個表達式。任何暗示爲什麼?我認爲這是因爲創建的遊牧民族可以採取更多的論據 – x4rkz
@ x4rkz分號只有在你有錯誤的縮進時纔有幫助。檢查'do'塊中的每個條目是否縮進相同的級別。例如,如果我縮進'放大$ ...'',那將成爲前一個條目的一部分,這會觸發你提到的錯誤。 – chi
我已經這樣做了,刪除了縮進,並確保我放了相同的。 – x4rkz