kyleg
01/09/2020, 6:15 PMval x: Option<Any> = TODO()
fun y: IO<Any> = TODO()
IO.fx {
   x.fold({}, { y.bind() })
}val x: Option<Any> = TODO()
fun y: IO<Any> = TODO()
IO.fx {
   x.map { y.bind() }
}bindOptionNoneSomemapfoldisEmptyJannis
01/09/2020, 6:19 PMfoldmaptraversekyleg
01/09/2020, 6:21 PMtraversetraverseJannis
01/09/2020, 6:22 PMJannis
01/09/2020, 6:26 PMfun <F, G, A, B> Kind<F, A>.traverse(f: (A) -> Kind<G, B>): Kind<G, Kind<F, B>>fun <A, B>Option<A>.traverse(f: (A) -> IO<B>): IO<Option<B>>bindmap { f(it).bind() }traverseJannis
01/09/2020, 6:29 PMJannis
01/09/2020, 6:34 PMImran/Malic
01/09/2020, 7:00 PMJannis
01/09/2020, 7:00 PMJannis
01/09/2020, 7:01 PMImran/Malic
01/09/2020, 7:02 PMImran/Malic
01/09/2020, 7:14 PMtraversekyleg
01/09/2020, 7:20 PMfun foo(): Try<Bar> =
  fx.monad {...}.fix()
}fooTry.fx { …}.fix()TryTrykyleg
01/09/2020, 7:21 PMImran/Malic
01/09/2020, 7:22 PMdokkarunAnkkyleg
01/09/2020, 7:23 PMJannis
01/09/2020, 7:23 PMJannis
01/09/2020, 7:24 PMkyleg
01/09/2020, 7:24 PMfx.monadkyleg
01/09/2020, 7:24 PMkotlinkotlin:ankJannis
01/09/2020, 7:25 PM*:ankkyleg
01/09/2020, 7:26 PMkotlin:ankdokkarunAnkJannis
01/09/2020, 7:27 PMraulraja
01/09/2020, 9:09 PMkyleg
01/10/2020, 6:24 PMJannis
01/10/2020, 6:33 PMOptionEither<L, *>LListIO<A>AtraversetraverseOptionOption<BinaryTree<A>>NoneNonetraverseSomekyleg
01/10/2020, 6:42 PMtraverseIO.applicative()Option.applicative()A<B<Any>>B<A<Any>>Jannis
01/10/2020, 6:48 PMtraversetraverse(Id.applicative(), f) == map(f)listOf(1,2,3,4).traverse(IO.applicative(), { IO { println(it) } })traverseTraversesequence