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
"