2

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 の問題はこちらです。

4

1 に答える 1