对多个 Either 值的错误处理
Error handling on multiple Either values
我有两个 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
我有两个 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