Chcę utworzyć aplikację Happstack z dużą dostęp do bazy danych. Myślę, że monady Stos z IO w dolnej i zapisu jak Database monady na górze (z pisarza dziennika w środku) będzie pracować, aby mieć jasne funkcje w każdej dostępu, np:Jak utworzyć Monadę bazy danych w Happstack?
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
Z:
getItemList :: MyDBMonad (Error [Item])
getItemList = do
-- etc...
Ale mam małą wiedzę monady i monada transformatorów (widzę to pytanie jako ćwiczenie do nauki o tym), a ja nie mam pojęcia, jak rozpocząć tworzenie bazy danych monady, jak podnieść IO z happstack do Stack bazy danych, ... itd.
Próbowałem użyć "unsafePerformIO" do wykonania w nim IO. jak Happstack używa czysto kombinacji, może to twój jedyny sposób na zrobienie IO. – Nybble
@Wu Xingbo, Możliwe jest wykonanie IO w happstack z liftIO, ale nie wiem, kto ma przejść do innego stosu monad. – Zhen