问题标签 [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.

0 投票
1 回答
311 浏览

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尝试一些东西。希望你有比我更多的想法。

对不起,我的英语不好,我已经开始学习英语,但我才刚刚开始,谢谢你的每一个想法和一切。

编辑,这是代码中缺少的内容:

这些函数也在文件中......我文件中的所有其他内容都是我为我创建的一些测试用例。

0 投票
3 回答
565 浏览

haskell - 在 haskell 程序中使用返回的 EitherT

我正在尝试在我正在处理的 Haskell 项目中使用“引文解析”包,但在实际代码中使用 EitherT 时遇到了麻烦。我知道它们是单子变换器,我想我理解这意味着什么,但是我似乎无法真正弄清楚如何使用它们。代表我正在尝试做的玩具示例如下:

在这里,resolveEither有类型:

runEitherT $ resolveEither "ref"具有以下类型:

但是,这会产生以下错误:

我不知道如何解决或解决。

任何帮助将不胜感激,特别是从使用角度而不是实现角度处理 monad 转换器的教程的指针。

编辑:

为了反映 dfeuer 和 Christian 对答案的评论,如果我将 main 更改为以下内容,我仍然会遇到错误:

我现在得到的错误是:

我正在编辑我的问题以及发表评论,因为这里的代码格式比在评论中要容易得多。

0 投票
1 回答
527 浏览

haskell - 我应该使用 Either monad 还是 ErrorT monad trasformer?

我读过这个问题。以下是已接受答案的引用:

此实例已添加到 ghc 7 附带的 base 4.3.xx 中。同时,您可以Either直接使用该实例,或者,如果您Either用于表示可能失败的内容,则应使用ErrorTmonad 转换器。

我想Either用于这样的事情:

因此,如果计算的一部分失败,则将其Left返回。

实际问题是:为什么我应该使用ErrorTmonad 转换器而不是Eithermonad?我是 Haskell 的新手,我有点害怕 monad 转换器,尤其是当我已经在其中编写代码时。

0 投票
1 回答
117 浏览

scala - Scala - 使用 Either 的递归模式匹配

我目前有一些看起来像这样的东西:

我想知道是否有任何方法可以实现某种递归函数来使我的模式匹配更清晰。看起来更像这样的东西:

0 投票
8 回答
9942 浏览

scala - 如何拆分列表[Either[A, B]]

我想将 a 分成List[Either[A, B]]两个列表。

有没有更好的办法 ?

0 投票
1 回答
109 浏览

scala - Scala中错误处理中的错误上下文

假设我需要调用远程 JSON/HTTP 服务。我发出一个 JSON 请求,通过 HTTP 将其发送到服务器,然后接收并解析 JSON 响应。

假设我有MyError错误的数据类型并且我的所有函数都返回Either[MyError, R]

我可以将它们结合起来编写一个新函数:

现在如果parseJsonResponse失败了怎么办?

我得到了错误,但我还需要整个上下文。那就是我需要url,requestDatajsonRequest。你会建议我怎么做?

0 投票
1 回答
267 浏览

scala - 在 Scala 中使用 Either 处理错误

这是我之前的问题的后续。假设我有以下功能:

假设我还想在错误消息中添加更多信息。

代码看起来很难看。你会如何建议改进代码?

0 投票
2 回答
231 浏览

haskell - 在 Haskell 中写 firstRightOrLefts 的惯用方式?

我有以下方法:

困扰我的是丑陋的模式匹配,我想知道是否有更惯用的方法来编写这种方法。这个想法是我有一堆可以返回 Eithers 的计算,我只想得到第一个结果或所有错误消息。也许我使用了错误的数据结构。也许 Writer monad 更适合这项任务。在这一点上我真的不确定。为任何帮助干杯!

0 投票
2 回答
2867 浏览

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)......这是一个有效的代码:

谢谢,拉卡

0 投票
1 回答
1466 浏览

scala - Scala是否真的是Monad

我想知道 scalaEither是否真的是Monad范畴论意义上的?我知道 Monads 应该有bindreturn方法。那是什么Eitherbind