我一直在使用Scotty Web 框架,并尝试使其与wai-handler-devel一起使用以启用代码重新加载。这是一个示例应用程序
{-# LANGUAGE OverloadedStrings #-}
module Example where
import Data.Monoid (mconcat)
import Network.Wai
import Web.Scotty
handler :: ScottyM ()
handler = get "/:word" $ do
beam <- param "word"
html $ mconcat ["<h1>Scotty, ", beam, " me up!</h1>"]
main :: IO ()
main = scotty 3000 handler
这里的问题是wai-handler-devel
期望获得一个(Application -> IO ()) -> IO ()
使事情正常进行的函数,但在这种情况下,我只有ScottyM ()
and IO ()
。Web.Scotty
和包中有几个函数Web.Scotty.Trans
,即以下
scottyApp :: ScottyM () -> IO Application
这可以把我们handler
变成IO Network.Wai.Application
,它更接近wai-handler-devel
预期,但不完全是。
也scottyAppT ::
省略了类型签名......但在这种情况下,我什至不确定如何阅读类型签名。
我发现有一些wai-handler-devel
仅在 WAI 应用程序上使用的示例,但我只是不知道如何将 Scotty 应用程序转换为具有所需签名的 WAI 应用程序。
我还想问一下,既然wai-handler-devel
不赞成使用 ,yesod-bin
那么即使对于像这样的简单 WAI/Scotty 应用程序,它是否应该替换它,或者 yesod-bin 是否仅适用于 yesod 应用程序?