Haskell 如何将Wai/Warp与数据库池一起使用

Haskell 如何将Wai/Warp与数据库池一起使用,haskell,Haskell,我想知道是否有人能告诉我如何在数据库池中使用Wai/Warp的正确方向 Warprun类型为Port->Application->IO(),其中Application类型为Request->(Response->IO ResponseReceived)->IO ResponseReceived 假设我有一个DB连接,我不知道如何包装我的应用程序,让每个请求共享连接池 我在想也许可以做这样的事情。这样行吗 {-# LANGUAGE OverloadedStrings #-} import Netw

我想知道是否有人能告诉我如何在数据库池中使用Wai/Warp的正确方向

Warp
run
类型为
Port->Application->IO()
,其中
Application
类型为
Request->(Response->IO ResponseReceived)->IO ResponseReceived

假设我有一个DB连接,我不知道如何包装我的
应用程序
,让每个请求共享
连接池

我在想也许可以做这样的事情。这样行吗

{-# LANGUAGE OverloadedStrings #-}
import Network.Wai
import Network.HTTP.Types
import Network.Wai.Handler.Warp (run)
import Database.MySQL.Base

createPool = do
    connect
        defaultConnectInfo 
            { ciUser = "username"
            , ciPassword = "password"
            , ciDatabase = "dbname" }

app :: IO MySQLConn -> Application
app conn _ respond = do
    respond $ responseLBS
        status200
        [("Content-Type", "text/plain")]
        "Hello, Web!"

main :: IO ()
main = do
    putStrLn $ "http://localhost:8080/"
    run 8080 $ app $ createPool

你试过什么?发生了什么事?它已经编译好了,似乎还在工作,但这不是重点。我想确保我是按照推荐的/正确的方式来做的,不会产生我不理解或不理解的问题,因为我在Haskell还是个新手