Haskellのブラケット関数が実行可能ファイルで機能するのに、テストでクリーンアップできないのはなぜですか?
Haskellのbracket関数が、stack runまたはstack testが使用されているかどうかによって異なる動作をするという非常に奇妙な動作を目にしています。 次のコードを検討してください。ネストされた2つのブラケットが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 …