LevelDB 라이브러리와 Snap 프레임 워크를 함께 사용하고 있습니다. 내가 가진 :Haskell : Snap 및 LevelDB를 멋지게 만들기
handleWords :: Handler App App()
handleWords = do
words <- uses thedb $ \db -> $ get db def "words"
writeBS $ pack $ show words
나에게 제공합니다 : No instance for (MonadResource IO) arising from a use of 'get'
어떤을
이main :: IO()
main = runResourceT $ do
db <- open "thedb" defaultOptions { createIfMissing = True }
liftIO $ serveSnaplet defaultConfig $ initWeb db
지금 내 처리기에서, 나는 데이터베이스를 조회하기 위해 MonadResource IO
다시 연락하는 방법을 확실 해요 아이디어? 모나드 "스택"을 올바르게 만드는 방법에 대해 뭔가 빠져있는 것처럼 느껴집니다. 감사합니다
아니요, 작동하지 않습니다. 'runResourceT' 블록을 종료 했으므로'db'는 즉시 닫힙니다. 당신이 제안한 코드는'withFile "foo"ReadMode return'와 유사합니다. –
아, 맞아. 나는 다른 상황에서 그 패턴을 사용하는 데 익숙해졌고 runResourceT가 클린업을 강제한다는 것을 잊어 버렸다. – mightybyte