Ich mache eine einfache Übung aus dem Buch Advanced scala with cats
auf eigene Faust.Scala mit Katzen - Cartesian + Validiert
Ich möchte Cartesian
mit Validated
verwenden.
/*
this works
*/
type ValidatedString = Validated[ Vector[String], String]
Cartesian[ValidatedString].product(
"a".valid[Vector[String]],
"b".valid[Vector[String]]
)
/* this doesnt work*/
type Result[A] = Validated[List[String], A]
Cartesian[ValidatedString].product(
f(somevariable)//returns Result[String],
g(somevariable)//returns Result[Int],
).map(User.tupled) // creates an user from the returned string, int
Im völlig ahnungslos. Irgendwelche Hinweise? Im erhalten:
could not find implicit value for parameter instance: cats.Cartesian[Result] Cartesian[Result].product( ^
In Ihrem ersten Beispiel definieren Sie 'ValidatedString' in Bezug auf' Vector [] ', während Sie es im zweiten Beispiel als' List [] 'definieren. Ist das ein echter Unterschied? –
Es ist ein kleiner Punkt, aber Ihr erstes Code-Snippet funktioniert _doesn_ nicht, da 'ValidatedString' kein Typkonstruktor ist. Es würde diese Frage für zukünftige Leser nützlicher machen, um sicherzustellen, dass Ihr Code korrekt beschrieben wird. –