【问题标题】:Error handling on multiple Either values对多个 Either 值的错误处理
【发布时间】:2017-12-27 14:07:30
【问题描述】:

我有两个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】:

    您可以使用 Either StringApplicative 的事实来处理此类事情。

    假设

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

    你可以写

    mapp :: Either String App
    mapp = App <$> mcnf <*> menv
    

    【讨论】:

    猜你喜欢
    • 2015-12-28
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多