我开始阅读有关monad变换器的内容,令我困惑的是Control.Monad.CatchIO我在许多代码示例中看到的导入声明:
import "MonadCatchIO-transformers" Control.Monad.CatchIO (finally)
Run Code Online (Sandbox Code Playgroud)
这个引用的标记是什么意思?我看了一下关于导入声明的Haskell 98 Report的部分,但这并没有帮助我理解.
我在haskell中编写了一个小程序,一种专门的HTTP服务器,它并不比下面的代码复杂得多.令我困惑的是它的内存消耗.比方说,当我运行一个从附带的代码编译的测试并且发出几个包含高达20Mb的整个程序的POST请求时,整个程序的VM大小将达到~800Mb,这听起来很奇怪.如果我让这样的程序的实例空闲,这个空间不会返回给系统.
这是什么意思?
import System.IO
import Network.HTTP.Server
import Network.Socket
import Network.URL
handler :: SockAddr -> URL -> Request String -> IO (Response String)
handler sa url rq = do
writeFile "/tmp/out" (rqBody rq)
return $ insertHeader HdrContentLength "0" (respond OK :: Response String)
main = serverWith defaultConfig {srvPort = 2121} handler
Run Code Online (Sandbox Code Playgroud) data II = I Int Int deriving (Show)
instance II Show where
show I a b = show (a+b)
Run Code Online (Sandbox Code Playgroud)
showt.hs:3:2:show' is not a (visible) method of classII'