我想創建一個Happstack應用程序,可以訪問數據庫。我認爲,一個單子堆棧與IO在底部和頂部的數據庫寫入般的單子(在中間日誌作家)將努力在每個接入,例如一個明確的功能:如何在Happstack中創建數據庫Monad堆棧?
itemsRequest :: ServerConfig -> ServerPart Response
itemsRequest cf = dir "items" $ do
methodM [GET,HEAD]
liftIO $ noticeM (scLogger cf) "sended job list"
items <- runDBMonad (scDBConnString cf) $ getItemLists
case items of
(Right xs) -> ok $ toResponse $ show xs
(Left err) -> internalServerError $ toResponse $ show err
用:
getItemList :: MyDBMonad (Error [Item])
getItemList = do
-- etc...
但我有單子和單子變形金剛(我認爲這個問題作爲一個練習來學習一下吧)的小知識,我不知道如何開始數據庫單子的創建,如何解除IO從happstack到數據庫堆棧,等等。
我試着用'unsafePerformIO'來做IO。因爲Happstack使用純粹的組合,也許這是你做IO的唯一方法。 – Nybble
@吳興波,可以用liftIO在happstack上做IO,但是我不知道是誰傳給另一個monad棧。 – Zhen