Для некоторой операции с файлом мне нужно проверить, существует ли файл, был ли он изменен, и только затем выполнить какую-то операцию над ним. Мой код newb ie Haskell выглядит следующим образом (упрощенно):
someFileOp ::FileContents -> FilePath -> IO (FileOpResult)
someFileOp contents absFilePath = do
fileExists <- DIR.doesFileExist absFilePath
if fileExists
then do
isMod <- isModified contents absFilePath
if isMod
then return FileModified
else return $ doSomethingWithFile
else return FileNotFound
Он работает. Однако вложенные if-выражения мне кажутся неправильными - не FP-подобными. Каким был бы идиоматический c способ проверить несколько логических условий в вводе-выводе и затем предпринять некоторые действия в зависимости от их результата?