我试图掌握 Haskell 程序如何避免测试“空值”。我正在努力摆脱这个程序中的案例表达:
main = do url:outputPath:[] <- getArgs
let maybeUri = parseURI url
case maybeUri of
Just uri -> download uri outputPath
Nothing -> return ()
我非常粗略的理解是我应该使用 monad 转换器,这样我就可以mappend
在 IO monad 中使用 single on Maybe 值,并且“do”语法应该能够支持它。我怎样才能做到这一点?