Haskell 终止Scotty应用程序后的清理

Haskell 终止Scotty应用程序后的清理,haskell,scotty,Haskell,Scotty,我有一个Scotty应用程序,它监听Unix套接字。我希望应用程序在退出套接字时(即键入Ctrl-C时)删除该套接字,但我不确定如何实现这一点。我的main函数如下所示 main = do sock <- socket AF_UNIX Stream 0 bind sock $ SockAddrUnix "/tmp/my_app.sock" listen sock maxListenQueue scottySocket def sock $ do

我有一个Scotty应用程序,它监听Unix套接字。我希望应用程序在退出套接字时(即键入Ctrl-C时)删除该套接字,但我不确定如何实现这一点。我的
main
函数如下所示

main = do
    sock <- socket AF_UNIX Stream 0
    bind sock $ SockAddrUnix "/tmp/my_app.sock"
    listen sock maxListenQueue

    scottySocket def sock $ do
        ...

    removeFile "/tmp/my_app.sock"
main=do

sock最简单的原则方法可能是使用from
控件。异常

main = bracket acquireSock cleanupSock $ \(sock, _) -> do
    listen sock maxListenQueue
    scottySocket def sock $ do
        ...
    where
    -- Acquiring the resource.
    acquireSock = do
        sock <- socket AF_UNIX Stream 0
        let sockPath = "/tmp/my_app.sock"
        bind sock $ SockAddrUnix sockPath
        return (sock, sockPath)
    -- Releasing the resource.
    cleanupSock (sock, sockPath) = do
        removeFile sockPath
        close sock
main=bracket acquiredsock cleanupSock$\(sock,\)->do
听sock maxListenQueue
scottySocket def袜子$do
...
哪里
--获取资源。
acquireSock=do
短袜