我有两个 either 值,例如:
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 值)。
Left
我需要两个 case 语句,但我想知道这里是否已经有了可以使用的抽象?
case
理想情况下,我会在出现错误时记录一条消息,并立即退出程序。
你可以利用以下事实 Either String 是一个 Applicative 对于这样的事情。
Either String
Applicative
假设
mcnf :: Either String Config menv :: Either String Env
你可以写
mapp :: Either String App mapp = App <$> mcnf <*> menv