Actually, something like do ... if <- checkCondition then doReportSuccess else doReportFailure as well as do ... case <- generateResult of Nothing -> ... Just r -> ...
getArgs >>= case of [] -> error "No args" fs -> doit fs "