2

型エイリアスを使用すると、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 の経験が限られているため、これについてバグを報告する必要があるかどうか、またはこれが予期される動作であるかどうかはわかりません。

これは本当にバグですか、それとも予想される動作ですか?

4

2 に答える 2

2

IllegalArgumentException がコンパイラの救済であることを自分自身でテストしたところ、これはバグである可能性があります。

于 2012-09-04T11:20:25.040 に答える
1

私もこれをテストしましたが、本当にバグのようです。それを scala チームに報告してください。ただし、コンパイラにヒントを与えることで、これを修正できます。

val x: Foo[Int] = Some(Some(4))
val y = optionT[Option](x)
y: scalaz.OptionT[Option,Int] = OptionT(Some(Some(3)))
于 2012-09-04T11:28:36.170 に答える