Как выйти из main в haskell при условии
у меня есть основная функция, которая делает много ИО. В какой-то момент, однако, я хочу проверить переменную, такую как not (null shouldBeNull)
закройте всю программу, не продолжая, с помощью кода выхода linux 1 и выведите сообщение об ошибке.
Я пробовал играть с error "..."
Как положить, что в if
:
if (not (null shouldBeNull)) error "something bad happened" else putStrLn "ok"
но я получаю parse error (possibly incorrect indentation)
:(.
вот измененный фрагмент.
main :: IO ExitCode
main = do
--Get the file name using program argument
args <- getArgs
file <- readFile (args !! 0)
putStrLn("n")
-- ... (some other io)
-- [DO A CHECK HERE], exit according to check..
-- ... (even more io)
echotry <- system "echo success"
rmtry <- system "rm -f test.txt"
system "echo done."
как вы можете заметить, я хочу проверить, где Я поставил [DO A CHECK HERE]
комментарий выше...
Спасибо за вашу помощь!
1 ответов
ошибка разбора заключается в том, что вы пропускаете then
ключевое слово в вашем if
выражение.
if condition then truePart else falsePart
для выхода, более подходящий выбор, чем error
можно использовать одну из функций System.Exit
, например exitFailure
.
так, например,
if not $ null shouldBeNull
then do putStrLn "something bad happened"
exitFailure
else putStrLn "ok"