错误处理多个要么值
问题描述:
我有两个either
值,例如:错误处理多个要么值
Either String Config -- error string or config parsed
Either String Env -- error string or environment variables detected
而且我想他们的价值观提取到这个纪录:
type App = App { config :: Config, env :: Env }
而失败快,如果有是错误(其中一个值为Left
)。
我可以使用两个case
语句,但我想知道是否已经有一个我可以在此使用的抽象了?
理想情况下,我会在出现错误时记录消息并立即退出程序。
答
对于这样的事情,您可以使用Either String
是Applicative
的事实。
假设
mcnf :: Either String Config
menv :: Either String Env
你可以写
mapp :: Either String App
mapp = App <$> mcnf <*> menv
感谢。另外我用'System.Exit.die'来处理错误:https://github.com/srid/slownews/commit/a80134c4d918e8b258ae3f1115a62c99ae9b601f –
听起来很对! – gallais