似乎使用类型别名会混淆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的经验有限,我不确定是否应该为此提交错误,如果这是预期的行为。
这真的是一个错误还是预期的行为?
答案 0 :(得分:2)
刚刚测试了我自己IllegalArgumentException是编译器拯救,这将是一个错误。
答案 1 :(得分:1)
我也对此进行了测试,这看起来确实是一个错误,你应该向scala团队报告。但是,您可以通过为编译器提供一个提示来解决此问题:
val x: Foo[Int] = Some(Some(4))
val y = optionT[Option](x)
y: scalaz.OptionT[Option,Int] = OptionT(Some(Some(3)))