问题标签 [either]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - Haskell Monads 要么
我对 Haskell 中的数据类型有一点问题,我想我应该先发布一些代码来帮助理解问题
我使用像“helper testexpression3”(+)这样的辅助函数,它返回值“Right 12”,类型为“Either InterpreterError Int”,但我只想拥有“Int”值“12”
我尝试了函数->“getValue(Right x)= x”,但我没有得到那个 Int 值。经过一段时间的测试,我认为这是我使用的 Monads 的问题。
如果我像这样测试辅助函数的类型: ":t (helper testexpression1 "(+)")" 我会得到: "(... :: (Functor a, MonadIO a, MonadMask a) => a (InterpreterError Int)"
我怎样才能使这样的事情起作用:写“getValue(helper testexpression1“(+)”)”并获得“12”::Int
我知道代码没有意义,但它是一个家庭作业,我想用haskell尝试一些东西。希望你有比我更多的想法。
对不起,我的英语不好,我已经开始学习英语,但我才刚刚开始,谢谢你的每一个想法和一切。
编辑,这是代码中缺少的内容:
这些函数也在文件中......我文件中的所有其他内容都是我为我创建的一些测试用例。
haskell - 在 haskell 程序中使用返回的 EitherT
我正在尝试在我正在处理的 Haskell 项目中使用“引文解析”包,但在实际代码中使用 EitherT 时遇到了麻烦。我知道它们是单子变换器,我想我理解这意味着什么,但是我似乎无法真正弄清楚如何使用它们。代表我正在尝试做的玩具示例如下:
在这里,resolveEither
有类型:
并runEitherT $ resolveEither "ref"
具有以下类型:
但是,这会产生以下错误:
我不知道如何解决或解决。
任何帮助将不胜感激,特别是从使用角度而不是实现角度处理 monad 转换器的教程的指针。
编辑:
为了反映 dfeuer 和 Christian 对答案的评论,如果我将 main 更改为以下内容,我仍然会遇到错误:
我现在得到的错误是:
我正在编辑我的问题以及发表评论,因为这里的代码格式比在评论中要容易得多。
haskell - 我应该使用 Either monad 还是 ErrorT monad trasformer?
我读过这个问题。以下是已接受答案的引用:
此实例已添加到 ghc 7 附带的 base 4.3.xx 中。同时,您可以
Either
直接使用该实例,或者,如果您Either
用于表示可能失败的内容,则应使用ErrorT
monad 转换器。
我想Either
用于这样的事情:
因此,如果计算的一部分失败,则将其Left
返回。
实际问题是:为什么我应该使用ErrorT
monad 转换器而不是Either
monad?我是 Haskell 的新手,我有点害怕 monad 转换器,尤其是当我已经在其中编写代码时。
scala - Scala - 使用 Either 的递归模式匹配
我目前有一些看起来像这样的东西:
我想知道是否有任何方法可以实现某种递归函数来使我的模式匹配更清晰。看起来更像这样的东西:
scala - 如何拆分列表[Either[A, B]]
我想将 a 分成List[Either[A, B]]
两个列表。
有没有更好的办法 ?
scala - Scala中错误处理中的错误上下文
假设我需要调用远程 JSON/HTTP 服务。我发出一个 JSON 请求,通过 HTTP 将其发送到服务器,然后接收并解析 JSON 响应。
假设我有MyError
错误的数据类型并且我的所有函数都返回Either[MyError, R]
我可以将它们结合起来编写一个新函数:
现在如果parseJsonResponse
失败了怎么办?
我得到了错误,但我还需要整个上下文。那就是我需要url
,requestData
和jsonRequest
。你会建议我怎么做?
haskell - 在 Haskell 中写 firstRightOrLefts 的惯用方式?
我有以下方法:
困扰我的是丑陋的模式匹配,我想知道是否有更惯用的方法来编写这种方法。这个想法是我有一堆可以返回 Eithers 的计算,我只想得到第一个结果或所有错误消息。也许我使用了错误的数据结构。也许 Writer monad 更适合这项任务。在这一点上我真的不确定。为任何帮助干杯!
scala - Scala Future, flatMap 适用于 Either
真的有办法将 Future[Either[Future[T1], Future[T2]]] 类型的对象转换为 Either[Future[T1], Future[T2]] 类型的对象吗?
也许类似 flatMap 的东西适用于 Either....
我正在尝试使此代码正常工作(我有类似的代码可以实现包装的动作链,但它不涉及未来。它可以工作,更简单)。下面的代码基于此,并进行了必要的修改以使其适用于涉及期货的情况。
更新更新更新
根据下面 Didier 的评论(Scala Future, flatMap that works on Either)......这是一个有效的代码:
谢谢,拉卡
scala - Scala是否真的是Monad
我想知道 scalaEither
是否真的是Monad
范畴论意义上的?我知道 Monads 应该有bind
和return
方法。那是什么Either
?bind