【发布时间】:2014-08-05 21:14:26
【问题描述】:
在 Haskell 或 Scala 中是否有标准的 Either 特化使 Left 和 Right 中包含的类型相同?
在 Haskell 中,我想要这样的东西:
data SpecializedEither a = Left a | Right a
这也可能被认为是对Maybe 的轻微概括,它使Nothing 保持一个值。
edit:Ganesh 提出了一个很好的观点,即不能为这种类型定义 Monad 实例。有没有更好的方法来做我想做的事情?
【问题讨论】:
-
(Bool, a)如果你眯着眼睛很接近 -
我考虑过,但后来我不得不特意为它编写 Monad 实例。我希望有一些东西 [standand] 我可以使用。
-
这个最近的问题说明了为什么你实际上不能为它获取 Monad 实例:stackoverflow.com/questions/24233245/…
-
@GaneshSittampalam 这仅表明
Either的“标准实例”失败了,对吧?还有其他适用于SpecializedEither的实例。 -
哦,是的,虽然我不确定任何替代方案是否有意义。