[英]EitherT[Option, A, B] === Option[Either[A,B]]
如果我理解正确, EitherT[Option,A,B
]应该与Option[Either[A,B]]
,但编译器不同意。 以下代码无法编译:
def f[A,B] = implicitly[EitherT[Option, A, B] === Option[Either[A,B]]]
我错过了什么?
它们是同构的,但不是同一个值。 EitherT[Option,A,B]
包装Option[Either[A,B]]
类型的值以提供不同的行为。 我们来看看定义:
final case class EitherT[F[_], A, B](run: F[A \/ B])
所以这里的EitherT
包装了一个Option,而名为run
的值是一个Option[Either[A,B]]
类型的值Option[Either[A,B]]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.