Leon K
08/23/2019, 6:04 PMnullableEitherTryTryeitherkt
val someTry: Try<List<Int>> = someTryReturner()
val result = someTry
  .map { it.map { it * 2 } }
  .map { it.sum() }
  .map { "result is ${it.toString()}" }
  .getOrElse { exception -> "There was an error: ${exception.message!!}" }
println(result)kt
val someNullable: List<Int>? = someNullableReturner()
val result = someNullable
  ?.map { it * 2 }
  ?.sum()
  ?.let{ "result is ${it.toString()}" }
  ?: "There was an error, but i don't know what kind of error D:"
println(result)Result<E, V>kt
val someExceptional: List<Int>?? = someExceptionalReturner()
val result = someExceptional
  ??.map { it * 2 }
  ??.sum()
  ??.let{ "result is ${it.toString()}" }
  ?: { exception -> "There was an error: ${exception.message!!}" }
println(result)runExceptionalfun thisThrows(): String {
  throw SomeException()
}
val someExceptional: String?? = thisThrows??()(() -> T)??Mike
08/23/2019, 6:21 PMmap/flatMapLeon K
08/23/2019, 6:42 PM?raulraja
08/23/2019, 6:50 PMraulraja
08/23/2019, 6:51 PMraulraja
08/23/2019, 6:51 PMLeon K
08/23/2019, 6:52 PMLeon K
08/23/2019, 6:55 PMkt
val maybeSomething: (SomeException | String) = foo()
when(maybeSomething) {
  is SomeException -> // handle error
  is String -> // do something 
}Leon K
08/23/2019, 6:55 PMmapflatmapLeon K
08/23/2019, 6:57 PMfun <T, O> (Throwable | T).map(transform: (T) -> (Throwable | O) = ...Leon K
08/23/2019, 7:01 PMval foo: (Int | String) = foo()
foo.let<Int> { it + 2 }
     .let<String>{ "$it is a string" }raulraja
08/23/2019, 7:06 PMtypealias StringOrInt= String | Int
val foo: StringOrInt = "ok"
val bar: StringOrInt = 1
val x: StringOrInt = foo + bar //ok because operator is polymorphic over semigroup combine
val y: Int = foo //not ok
val z: String = foo //not okraulraja
08/23/2019, 7:08 PMraulraja
08/23/2019, 7:08 PMraulraja
08/23/2019, 7:09 PMLeon K
08/23/2019, 7:11 PMraulraja
08/23/2019, 7:13 PMLeon K
08/23/2019, 7:14 PMwhenraulraja
08/23/2019, 7:14 PMraulraja
08/23/2019, 7:14 PMraulraja
08/23/2019, 7:15 PMraulraja
08/23/2019, 7:15 PMraulraja
08/23/2019, 7:15 PMraulraja
08/23/2019, 7:17 PMLeon K
08/23/2019, 7:18 PMraulraja
08/23/2019, 7:19 PMraulraja
08/23/2019, 7:20 PMLeon K
08/23/2019, 7:20 PMflatMap?.raulraja
08/23/2019, 7:20 PMraulraja
08/23/2019, 7:20 PM!Leon K
08/23/2019, 7:20 PMraulraja
08/23/2019, 7:20 PMraulraja
08/23/2019, 7:21 PMLeon K
08/23/2019, 7:23 PM?Leon K
08/23/2019, 7:25 PMraulraja
08/24/2019, 10:35 AMraulraja
08/24/2019, 10:35 AMraulraja
08/24/2019, 10:35 AMraulraja
08/24/2019, 10:35 AMraulraja
08/24/2019, 10:37 AMraulraja
08/24/2019, 10:39 AM!flatMap(A) -> Kind<F, B>raulraja
08/24/2019, 10:39 AMraulraja
08/24/2019, 10:40 AMraulraja
08/24/2019, 10:40 AMraulraja
08/24/2019, 10:40 AMraulraja
08/24/2019, 10:41 AMraulraja
08/24/2019, 10:42 AMraulraja
08/24/2019, 10:43 AMfor inraulraja
08/24/2019, 10:45 AMval fa: F<A> = 
  for {
   a in fa
   b in fb(b)
   b
  }raulraja
08/24/2019, 10:45 AMraulraja
08/24/2019, 10:46 AMF<A>Kind<F, A>raulraja
08/24/2019, 10:48 AMraulraja
08/24/2019, 10:51 AMforraulraja
08/24/2019, 10:53 AMLeon K
08/24/2019, 11:24 AMraulraja
08/24/2019, 11:29 AMLeon K
08/24/2019, 11:41 AMraulraja
08/24/2019, 11:49 AMflatMapraulraja
08/24/2019, 12:10 PMfun <B> F<A>.flatMap(f: (A) -> F<B>): F<B>forfor inval x : Observable<Int> =
  for {
     a in ob1
     b in ob2(a)
     a + b
  }val x : Observable<Int> =
  ob1.flatMap { a ->
    ob2(a).flatMap { b ->
       ...
    }
  }for inforwhenPhBastiani
08/24/2019, 10:05 PMfor <-yieldyieldraulraja
08/24/2019, 10:08 PMraulraja
08/24/2019, 10:09 PMraulraja
08/24/2019, 10:09 PMPhBastiani
08/24/2019, 10:13 PMfxraulraja
08/24/2019, 10:37 PMraulraja
08/24/2019, 10:42 PMraulraja
08/24/2019, 10:43 PMraulraja
08/24/2019, 10:46 PMstojan
08/25/2019, 11:48 AMgabib
08/26/2019, 5:50 AMelizarov
08/30/2019, 10:57 AMflatMapfor { ... }val x : Observable<Int> = flow {
     ob1.collect { a ->
         ob2(a).collect { b ->
             emit(a + b)
         }
     }
}.asObservable()forcollectval x : Observable<Int> = flow {
     for (a in ob1) 
         for (b in ob2(a))
             emit(a + b)
}.asObservable()elizarov
08/30/2019, 11:33 AMforraulraja
08/30/2019, 11:58 AMelizarov
08/30/2019, 12:37 PMflow { for(a in ...) for(b in ...) .... emit(result) }for(a <- ...; b <- ...; ....) yield { result }forflowelizarov
08/30/2019, 12:41 PMUberto Barbini
08/30/2019, 3:36 PMelizarov
08/30/2019, 4:34 PMelizarov
08/30/2019, 4:38 PMfor(...) yield { ... }forFutureUberto Barbini
08/30/2019, 6:02 PMUberto Barbini
08/30/2019, 6:05 PMraulraja
08/30/2019, 6:23 PMforinval List<Pair<Int>> = 
  for {
    a in 1..20
    b in half(a)
    c in half(b)
    a to c
  }raulraja
08/30/2019, 6:27 PMfun <A, B> Flow<A>.flatMap(f: (A) -> Flow<B>): Flow<B>raulraja
08/30/2019, 6:30 PMfAUberto Barbini
08/30/2019, 6:32 PMraulraja
08/30/2019, 6:32 PMraulraja
08/30/2019, 6:33 PMraulraja
08/30/2019, 6:34 PMLeon K
09/12/2019, 8:44 PMmonadraulraja
09/12/2019, 9:17 PMLeon K
09/13/2019, 7:53 PMraulraja
09/13/2019, 9:29 PMfun <A, B> F<A>.flatMap(f: (A) -> F<B>): F<B>raulraja
09/13/2019, 9:32 PMListoperator