Я пытаюсь понять, как программы на Haskell могут избежать проверки на «пустое значение». Я изо всех сил пытаюсь избавиться от выражения case в этой программе:
main = do url:outputPath:[] <- getArgs
let maybeUri = parseURI url
case maybeUri of
Just uri -> download uri outputPath
Nothing -> return ()
Мое очень грубое понимание состоит в том, что я должен использовать монадный преобразователь, чтобы я мог использовать одно значение mappend
для значения Maybe в монаде IO, и синтаксис 'do' должен поддерживать его. Как я могу этого добиться?