Haskellで排他的に使用するファイルをロックし、すでにロックされている場合はIOError
を投げたいと思います。Haskellでロックされたファイルを報告する方が良い
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
を処理し、ちょうどそれがNothing
であれば例外をスローするためのより良い方法はありますか?これら2つの行を1つにまとめることはできますか?
N.B.:これらの行の任意の組み合わせが意図をあまり明確にしないと主張することができます。
あなたのサンプルコードは無効です。タイプエラーがあります。 –