为什么Haskell的方括号函数在可执行文件中有效,但在测试中无法清除?
我看到一个非常奇怪的行为,其中Haskell的bracket功能表现不同,这取决于是否stack run或stack test使用。 考虑以下代码,其中使用两个嵌套括号来创建和清理Docker容器: module Main where import Control.Concurrent import Control.Exception import System.Process main :: IO () main = do bracket (callProcess "docker" ["run", "-d", "--name", "container1", "registry:2"]) (\() -> do putStrLn "Outer release" callProcess "docker" ["rm", "-f", "container1"] putStrLn "Done with outer release" ) (\() -> do bracket (callProcess …