多个Either值的错误处理

问题描述 投票:1回答:1

我有两个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语句,但我想知道是否已经有一个我可以在这里使用的抽象?

理想情况下,我会在出错时记录消息并立即退出程序。

haskell error-handling either
1个回答
6
投票

你可以使用Either String是这样的事情的Applicative这一事实。

假设

mcnf :: Either String Config
menv :: Either String Env

你可以写

mapp :: Either String App
mapp = App <$> mcnf <*> menv
© www.soinside.com 2019 - 2024. All rights reserved.