Rei*_*ica 1 error-handling haskell either
我有两个either值,例如:
Either String Config -- error string or config parsed
Either String Env -- error string or environment variables detected
Run Code Online (Sandbox Code Playgroud)
我想将它们的值提取到此记录中:
type App = App { config :: Config, env :: Env }
Run Code Online (Sandbox Code Playgroud)
如果有错误则快速失败(Left其中一个值的值).
我可以使用两个case语句,但我想知道是否已经有一个我可以在这里使用的抽象?
理想情况下,我会在出错时记录消息并立即退出程序.
您可以使用这一事实Either String是Applicative这样的事情.
假设
mcnf :: Either String Config
menv :: Either String Env
Run Code Online (Sandbox Code Playgroud)
你可以写
mapp :: Either String App
mapp = App <$> mcnf <*> menv
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |