Я делаю простое упражнение из книги Advanced scala with cats
самостоятельно.Scala with Cats - Cartesian + Validated
Я хочу использовать Cartesian
с Validated
.
/*
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 совершенно невежественны. Любые намеки? Im получение:
could not find implicit value for parameter instance: cats.Cartesian[Result] Cartesian[Result].product( ^
В первом примере вы определяете 'ValidatedString' в терминах' Vector [] ', а во втором примере вы определяете его в терминах' List [] '. Это реальная разница? –
Это второстепенный момент, но ваш первый фрагмент кода _doesn't_ действительно работает, так как 'ValidatedString' не является конструктором типа. Это сделало бы этот вопрос более полезным для будущих читателей, чтобы убедиться, что ваш код описан правильно. –