当前位置:  开发笔记 > 编程语言 > 正文

如何在Haskell中出错时提取Either的权利并保留其左边的信息?

如何解决《如何在Haskell中出错时提取Either的权利并保留其左边的信息?》经验,为你挑选了1个好方法。

我试图在值的Right构造函数中提取Either值,同时如果Either问题实际上是Left一个错误(即错误)则给出错误.Either Right Left中如何读取值的答案给了我类似的东西:

fromRight e = either (const $ error "Either Left encountered while expecting Right") id e

这有效,但丢弃了Leftctor 的错误消息中的有用信息Either.如何发布有关相关的错误消息Left

- 编辑 -

感谢您的投入.我希望这是一个更具信息性的版本fromJust.

另外,我想避免case每次都写一个语句,并且想要避免Monads,只要它不太复杂(保持函数"eval"风格).对于我的用例,它是面向计算的,只有当提供无效输入之类的东西时才会出现错误(当没有补救措施时).

我最终使用:

fromRight e = either (error.show) id e

dfeuer.. 5

而不是const ...在第一个参数中使用,而是either使用其他东西.

either oops .... where
  oops x = error $ "Oops! Got an " ++ show x

管他呢.


但请注意,该内容error只应用于内部错误.应该允许用户错误,连接错误等冒泡IO,然后报告throwIO或优雅地处理.



1> dfeuer..:

而不是const ...在第一个参数中使用,而是either使用其他东西.

either oops .... where
  oops x = error $ "Oops! Got an " ++ show x

管他呢.


但请注意,该内容error只应用于内部错误.应该允许用户错误,连接错误等冒泡IO,然后报告throwIO或优雅地处理.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有