使用类型别名似乎混淆了Scala类型推断器或编译器。实际上,试图编译
import scalaz.OptionT.optionT
type Foo[A] = Option[Option[A]]
val x: Foo[Int] = Some(Some(3))
optionT(x)导致奇怪的错误
java.lang.IllegalArgumentException: transpose requires all collections have the same size由于我对Scala的经验有限,我不确定是否应该为此提交一个bug,如果这是预期的行为。
这真的是一个错误还是预期的行为?
发布于 2012-09-04 11:20:25
我自己刚刚测试过,IllegalArgumentException是编译器的跳出,这将是一个bug。
发布于 2012-09-04 11:28:36
我也对此进行了测试,这看起来确实是个bug,您应该向scala团队报告这一点。但是,您可以通过给编译器一个提示来解决这个问题:
val x: Foo[Int] = Some(Some(4))
val y = optionT[Option](x)
y: scalaz.OptionT[Option,Int] = OptionT(Some(Some(3)))https://stackoverflow.com/questions/12261882
复制相似问题