願わくば、これが図書館の売春斡旋に関する簡単な質問になることを願っています (このテーマに関する他の質問は、私の現在のスキル レベルを超える回答を生成する傾向があるためです)。
私がやりたいのは、コレクションとそれ自体の外積をマッピングすることだけです。
val distances = points.crossMap(_ distance _) // points: List[Point3d]
だから私はTraversable
こうやってポン引きしようとしました:
implicit def toSelfCrossMappable[A](xs: Traversable[A]) = new {
def crossMap[B](f: (A, A) => B) = xs.flatMap(a => xs.map(f(a, _)))
}
しかし、それは機能しません (暗黙の変換を行っていません)。なぜそうでないのかわかりません (私は scala にかなり慣れていません)。また、 Enriching Scala collections で提案されている方法を、次のような方法で試しました。
implicit def toSelfCrossMappable[A, C[A]](xs: C[A])(implicit c: C[A] => Traversable[A]) = new SelfCrossable[A, C[A]](xs)(c)
class SelfCrossable[A, C](xs: C)(implicit c: C => Traversable[A]) {
def crossMap[B](f: (A, A) => B) = xs.flatMap(a => xs.map(f(a, _)))
}
、しかし、それは私の(より単純に見える)方法と同じエラーをスローします。
ここで何が間違っていますか?