【发布时间】:2013-09-13 20:16:52
【问题描述】:
我试图了解 Haskell 程序如何避免测试“空值”。我正在努力摆脱这个程序中的案例表达:
main = do url:outputPath:[] <- getArgs
let maybeUri = parseURI url
case maybeUri of
Just uri -> download uri outputPath
Nothing -> return ()
我非常粗略的理解是我应该使用 monad 转换器,这样我就可以在 IO monad 中的 Maybe 值上使用单个 mappend 并且“do”语法应该能够支持它。我怎样才能做到这一点?
【问题讨论】: