如何在规则中使用 withTempDir 创建的目录?

how can I use the dir created by withTempDir in a rule?

我需要在Actions中按名称引用withTempDir创建的目录。我猜当前工作目录被 withTempDir 改变了,这在简单的情况下可能会起作用。但是,某些操作必须自己执行 (Cwd somewhere).

有没有办法在 Action 中获取创建的临时目录的完整路径名?

withTempDir 不改变当前目录。通常,在多线程程序中更改当前目录(全局资源)是一个非常糟糕的主意。临时目录的名称传递给给定的函数withTempDir,所以你可以这样做:

withTempDir $ \mydir -> do putNormal $ "Temp directory is " ++ mydir liftIO $ writeFile (mydir </> "test.txt") "writing out a temp file"

我同意 withTempDir 的文档有点欠缺,所以 raised a bug 可以改进它们。