[很久以前,我们在团队中就使用Try[A]
与Either[Throwable, A]
进行了长时间的辩论,最终选择了Try[A]
,因为当Either
的左侧为Throwable
时,它们在语义上是相同的。那时我正在搜索使用Either[Throwable, A]
的代码库,但找不到任何代码。
但是今天,当观看法比奥·拉贝拉(Fabio Labella)关于How do Fibers Work? A Peek Under the Hood的演讲时,下列签名让我印象深刻
def async[A](k: (Either[Throwable, A] => Unit) => Unit): F[A]
所以我的问题是,使用Either[Throwable, A]
而不是Try[A]
有什么特殊的原因吗?推荐哪一个?
忽略this question的答案,这是差异列表: