报告Haskell中锁定文件的更好方法

报告Haskell中锁定文件的更好方法,haskell,exception-handling,maybe,Haskell,Exception Handling,Maybe,我想在Haskell中锁定一个独占使用的文件,并在该文件已被锁定的情况下抛出一个IOError import Data.Maybe (fromMaybe) import System.FileLock (FileLock, SharedExclusive (Exclusive), tryLockFile) -- ... do -- ... maybeFileLock <- tryLockFile path Exclusive -- returns Maybe FileLock

我想在Haskell中锁定一个独占使用的文件,并在该文件已被锁定的情况下抛出一个
IOError

import Data.Maybe (fromMaybe)
import System.FileLock (FileLock, SharedExclusive (Exclusive), tryLockFile)

-- ...
do
  -- ...
  maybeFileLock <- tryLockFile path Exclusive -- returns Maybe FileLock
  let fileLock = fromMaybe (throwIO (userError "File locked")) maybeFileLock
导入数据.Maybe(fromMaybe)
导入System.FileLock(FileLock、SharedExclusive(独占)、tryLockFile)
-- ...
做
-- ...

也许这是有效的。谢谢我在尝试编译时意识到不匹配的类型,但仍在研究如何修复它。您的示例代码无效。它有一个类型错误。
fileLock <- fromMaybe (throwIO (userError "File locked"))
  <$> tryLockFile path Exclusive
fileLock <- maybe (throwIO (userError "File locked")) pure
  =<< tryLockFile path Exclusive