私は99 の Scala Problemsに取り組んでおり、#27 - Group Elements of a Set into Disjoint Subsets で思わぬ障害に遭遇しました。すべての作業を行うヘルパー関数を作成しましたが、唯一の問題は、型の不一致エラーが発生することです。関数は次のとおりです。
def addGroupN[T](gs: List[List[List[T]]], n: Int): List[List[List[T]]] = {
gs.flatMap(xss => combinations(n, list diff xss.flatten).map(xs => xss :+ xs))
}
はlist
型List[T]
で、関数combinations
は を返しますList[List[T]]
。コンパイラは、これが として型付けされるように計算しているList[List[List[Any]]]
ため、署名との不一致があります。
私は、型評価について適切に推論する方法をよりよく理解するよりも、スタイル/慣用句の提案にはあまり関心がありません。正しい署名に一致するようにこれを適切に記述する方法に答えることに加えて、現在の形式でこの関数が a以外のものを返す方法を示す何かList[List[List[T]]]
も役立ちます。
編集:
の完全な署名combinations
は
def combinations[T](n: Int, list: List[T]): List[List[T]]