2

ジェネリック関数の型を推測するために scala シェルを使用することは可能ですか?

関数 Future.traverse (scala 2.10) の型を理解しようとしていました。完全なジェネリック型は

def traverse[A, B, M[_] <: TraversableOnce[_]](in: M[A])(fn: A => scala.concurrent.Future[B])(implicit cbf: generic.CanBuildFrom[M[A],B,M[B]], executor: ExecutionContext): Future[M[B]]   

これは私にはほとんど読めないほど長いので、より具体的なタイプを試してみるのは良い考えだと思いました。だから私は試しました:

> :t (x : List[_]) => (Future traverse x) _
List[_] => ((Any => scala.concurrent.Future[Nothing]) => scala.concurrent.Future[List[Nothing]])

これは大いに役立ちましたが、List 型コンストラクター内で型を指定できればもっとよいでしょう。

:t (x : List[a]) => (将来のトラバース x) _

残念ながら(そして理解できるように)type a not foundエラーが発生します。

これを機能させる方法はありますか?

4

1 に答える 1

1

多分

scala> object Foo {
     | type A = Int
     | type B = Int
     | }
defined object Foo

scala> import Foo._
import Foo._

scala> :type  Future.traverse[A,B,List] _
List[Foo.A] => ((Foo.A => scala.concurrent.Future[Foo.B]) => scala.concurrent.Future[List[Foo.B]])
于 2013-06-07T23:19:57.853 に答える