raulraja
04/24/2018, 7:43 PMOptionT.monad<EitherKindPartial<String>>()
//is now
OptionT.monad(Either.monad<String>())
jtonic
04/25/2018, 7:44 PMfun getMovies(artistName: String): Either<String, Option<List<String>>> {
return when (artistName) {
"Brad Pitt" -> Either.right(Option.just(listOf("Troy", "The inglorious bastards")))
"Angelina Jolie" -> Either.right(Option.just(listOf("Lara Croft", "Original Sin", "Changeling")))
"Antonel Ernest Pazargic" -> Either.right(Option.empty())
else -> Either.left("Error accessing db...")
}
}
val bradPittMovies: Either<String, Option<List<String>>> = getMovies("Brad Pitt")
val angelinaJolieMovies: Either<String, Option<List<String>>> = getMovies("Angelina Jolie")
OptionT.monad(Either.monad<List<String>>()).binding {
val bradPittMovies: List<String> = OptionT(bradPittMovies).bind()
val angelinaJolieMovies: List<String> = OptionT(angelinaJolieMovies).bind()
}.value().fix()
Error:(45, 48) Kotlin: Type mismatch: inferred type is OptionT<Kind<ForEither, String>, List<String>> but Kind<OptionTPartialOf<EitherPartialOf<List<String>> /* = Kind<ForEither, List<String>> /> / = Kind<ForOptionT, EitherPartialOf<List<String>> /* = Kind<ForEither, List<String>> */> */, List<String>> was expected
Thank you in advance for your further clarifications.jtonic
04/25/2018, 7:46 PMraulraja
04/25/2018, 7:52 PMraulraja
04/25/2018, 7:55 PMOptionT.monad(Either.monad<String>())
instead of
OptionT.monad(Either.monad<List<String>>())
raulraja
04/25/2018, 7:55 PMraulraja
04/25/2018, 7:56 PMjtonic
04/25/2018, 8:08 PMraulraja
04/25/2018, 8:11 PMraulraja
04/25/2018, 8:12 PMFunctional Kotlin
I’m sure @dh44t would love to read that you just said ^^^ 🙂