问题标签 [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.
scala - 史酷比连接 DLists 问题
我有以下结构的 scala scoobi代码(我现在在本地执行):
processSource 是一个对象,如下所示:
现在,我的问题是 getRidOfRight 只返回它应该返回的输出的一部分。为什么?
scala - 斯卡拉:要么,右,左
我是 Scala 的新手,目前正在尝试使用 play 框架。
这是我写的工作代码:
嗯,这看起来不太好。我们能做得更好吗?我还不能。但我看到了这个 stackoverflow 帖子:https ://stackoverflow.com/a/24085333/3038183看起来很不错:)
现在我想知道如何转换我的代码,所以它看起来像给定的例子。当然我已经尝试过了,但我无法让它编译,也不知道如何处理注释后的代码(“我如何将它转换成更漂亮的代码”)。就我而言,我使用的是 play.api.mvc.Result 而不是上面链接中给出的“失败”。那么我的 Either[play.api.mvc.Result, ?WhatHere?] 应该是什么类型?
此致
编辑:我接受了特拉维斯的回答。非常感谢。
对于任何对这里感兴趣的人来说,我可以编写更好看的代码,这要感谢 Travis:
scala - 为什么 Scala 库回避动态绑定?
如果我正在编写库,我会习惯性地这样编写 Option:
注意使用多态来map
实现。然而,map 的真正实现完全在 Option 类中,它看起来像这样:
我声称我的实现更干净(请参阅其他地方的多态性的优点)并且可能更快。使用类型匹配而Either
不是if
类似情况,这让我想起了switch
C 人在接触 Java 时使用的语句。有趣的是,类似的实现Try
遵循我的 OOP 学校。所以我猜在Option
. 还有其他原因吗?
haskell - Haskell 初学者无法匹配预期类型
我需要编写一个程序,将四个值的列表(可以是 I 或 O)解码为[Either Bool Bool]
. 我知道我必须使用也许,但我根本无法绕过它。现在我完全绝望了,因为我根本无法解决这个问题。
示例输入和输出可能如下所示: [I,O,O,I] => [Left True, Right False]
这是我拥有的当前代码:
这些是我得到的错误:
现在任何可以帮助我解决这个问题的东西都是受欢迎的。我已经尝试了这一天的大部分时间,但我根本无法解决它。
scala - Scala - 期货和二选一
这个线程让我知道如何构建我的代码: Scala-way to handle conditions in for-comprehensions?
有问题的部分:
这是我不明白的行:
userRes.withFailure (UserNotFound).right映射到userDao.authenticate(user)。这将创建一个新的 Either,其右侧有一个 Future,对吗?
怎么能
属于它的类型。我认为应该有另一个未来,而不是 JsResult。谁能给我解释一下?
编辑:由于 cmbaxter 和 Arne Claassen 证实了这一点,新的问题是:我应该如何编写这段代码,这样它看起来并不难看,而是干净和结构化?
functional-programming - Scala的惯用方法,根据列表内容将一个列表放入左侧或右侧
我有一份清单
结果,我想要 a Right
if 列表中的所有内容都是 a Right
else 我想要 a Left
。这听起来像列表应该有偏见(例如使用Try
代替),但让我们假设它不是或不应该是。
结果的内容Right
orLeft
将始终相同(例如,字符串,见吹) - 只有 Container 应该不同。例如,对于上面的列表,我们希望从该列表中创建一个字符串,因此结果应该是Left
like Left("Right(5) -> Left(abc) -> Right(42)")
。如果我们有另一个Right(12)
而不是Left("abc")
它应该是Right("Right(5) -> Right(12) -> Right(42)")
。
我可以手动检查列表中是否至少有一个Left
,并使用 if 进行分支以创建 aLeft
或 aRight
作为结果,但我想知道:是否有更类似于 Scala 的方式来做到这一点?
scala - Monad 转换器 - Scalaz - List[Future[String\/String]] 到 Future[String\/String]
我想知道如何将 a 转换List[Future[String\/String]]
为Future[String\/String]
.
其实我只是想申请list的每个元素EitherT.apply
。
我想要的看起来像这样:
在此示例中,我想将函数fun
和函数的参数列表(包含 n 个元素)设置为输入fun
(此处为 : List(arg1, arg2, arg3)
)。
但我不知道如何使用期货进行管理。是否可以保持异步?
exception-handling - 在 Clojure 中处理纯错误?
我正在开发一个使用大爆炸式编程风格的游戏,其中将整个状态定义为单个数据结构,并通过交换单个原子来管理状态更改。
在游戏中,我们不能信任客户端发送的数据,因此服务器必须预测某些动作无效的可能性并加以防范。当一个人编写一个交换世界状态的函数时,它可以从纯粹的开始;但是,必须考虑无效请求的可能性。我相信要在惯用的 Clojure 中实现不愉快的路径,只需抛出异常。所以现在可能是纯函数被副作用异常感染了。也许这就是它必须的样子。
我的目标是将副作用推迟到最后一刻。我几乎没有涉足 Haskell 领域,但我知道 Either monad 的概念。当一个人考虑幸福和不幸的道路时,就会明白总有这两种可能性。这让我认为这swap!
本身是不够的,因为它忽略了不愉快的道路。这是这个想法的精神:
Clojure 社区是否采用了更多功能性的方法来处理异常?
scala - 如何在 Scala 中组合非此即彼/析取的未来
假设我要编写以下函数:
由于 ,该函数mayFail
很慢,slowAndMayFail
所以我希望它返回.Error \/ Int
直接的方法可能是让slowAndMayFail
return scalaz.Future[Error\/Int]]
,让所有其他函数(mayFail1
、mayFail2
等)Future[Error\/Int]]
也返回,然后将EitherT
它们相加组合在一起。
是否有意义 ?有更简单/更简单的解决方案吗?
我知道这scalaz
提供了任务,但我现在坚持Future
。
scala - 为什么在“Scala函数式编程”一书的“无异常处理错误”一章中没有提到`scala.util.Try`?
在“Scala 中的函数式编程”一书的“无异常处理错误”一章中,作者给出:
- 从函数体抛出异常的问题
- 如果
Option
我们不关心实际的异常,请使用 Either
如果我们关心实际的异常,请使用
但scala.util.Try
并未提及。从我的角度来看,我认为Try
在我们关心实际异常时非常合适,为什么不提呢?有什么我错过的原因吗?