の配列/リストを平らにはList[Validated[NonEmptyList[ErrorType], T]]
であり、私は私の貧弱な試みはすべてのエラーを収集し、その後、新しいものを作ることですValidated[NonEmptyList[ErrorType], T]
折りたたみ/私が持っているどのような猫cats.Validated
にこれを平らにしたいです。
val errors = validations collect {
case Invalid(errs) => errs.toList
}
if (errors.nonEmpty) Invalid(NonEmptyList.fromListUnsafe(errors.flatten)) else Valid(t)
私はfoldMap
とtraverse
を試みたが、私はスコープでMonoid
を持っていない、と私は1つのライナーで、箱から出して、これを提供し、おそらく猫のように感じる問題に遭遇invarialby。
older answers on this kind of questionの中には期限が切れているものがあります(または、少なくとも私が参照している機能が見つかりません)。
更新:
私はこのタイプを修正しました。
'cats._; cats.implicits._'は範囲内にありますか? –
'cats.implicits._'はい。でも、私は平らにするために何をしていますか? – monkjack
あなたの例で変数 't'の型を明確にすることができますか?これは単一の値( 'Option [T]'のようなもの)ですか?それは値の 'Seq [T]'ですか?後者の場合、 'T'型の値は返されますか?それは別のものですか? – SergGr