В настоящее время у меня есть этот код, который будет выполнять функцию main'
для каждого из имен файлов в списке files
.Использование mapM f [список], где f определяется с помощью нотации
В идеале я пытался совместить main
и main'
, но я не достиг большого прогресса. Есть ли лучший способ упростить это или мне нужно будет их разделить?
{- Start here -}
main :: IO [()]
main = do
files <- getArgs
mapM main' files
{- Main's helper function -}
main' :: FilePath -> IO()
main' file = do
contents <- readFile file
case (runParser parser 0 file $ lexer contents) of Left err -> print err
Right xs -> putStr xs
Thanks!
Редактировать: Поскольку большинство из вас предлагает; Я пробовал абстракцию лямбда для этого, но не понял. - Должен был указать это выше. С примерами я вижу это лучше.
'forM_' и' mapM_' также хороши, потому что они делают ваши намерения более ясными, поэтому вы должны всегда использовать их, даже если производительность не имеет значения. –
Ах да, я пытался что-то похожее на это, но я довольно новичок в «флип» и не думал об использовании здесь. – Dacto