cats
のリストでそのトラバース/シーケンス機能を使用するために、プロジェクトでライブラリを使用することを検討していEither
ます。しかし、Intellij IDEA で を実行するとShow type
、完全に奇妙な推論型が表示されます。同時に、このコードを にコピー アンド ペーストするとsbt console
、見栄えがよくきれいな文字になります。例を次に示します。
scala> :paste
// Entering paste mode (ctrl-D to finish)
import cats._, cats.syntax.traverse._, cats.std.all._
val xs: List[Either[String, Int]] = List(Right(1), Right(2))
val r = xs.sequenceU
// Exiting paste mode, now interpreting.
import cats._
import cats.syntax.traverse._
import cats.std.all._
xs: List[Either[String,Int]] = List(Right(1), Right(2))
r: scala.util.Either[String,List[Int]] = Right(List(1, 2))
ご覧のとおり、変数r
の型はEither[String, List[Int]]
.
ただし、Intellij は次のモンスターを推測します。
Unapply.Aux2Right[Applicative, Either[String, Int], Either, String, Int]#M[List[Unapply.Aux2Right[Applicative, Either[String, Int], Either, String, Int]#A]]
このタイプを見ただけで理解したまま放っておけば、私のカルマが大幅に低下するため、同僚に苦痛を与えたくありません。最新の Intellij 16.1 EAP および Scala プラグインの EAP ビルド、およびそれらの安定バージョンでこれを試しましたが、すべて同じです。
現時点では他にできることはないと思いますが、もしかしたら、これに対する回避策があるのではないでしょうか?
PS このようなこと (つまり、ツールのサポート) は、少なくとも FP 固有の概念の複雑さ以上に FP の採用を遅らせます。:(
Intellij のトラッカーでの PPS の問題はこちらです。