A good way to put monads to practice in Kotlin is ...
# arrow
r
A good way to put monads to practice in Kotlin is using
arrow-effect
and the
Effect
hierarchy to build imperative programs with
binding
comprehensions and observing how that frees you from the runtime and it allows your programs to run in Kotlin Coroutines Deferred, Rx Observables, Reactor Flux, etc. I believe that one of the main reasons people are migrating out of Rx2 and into Coroutines it’s because of the
async/await
syntax and you can do that with Arrow for all data types that provide a
Monad<F>
instance where
F
is any of the docens of data types that Arrow supports today:
async/await
is the same as
binding/bind
but binding works in ALL monad capable data types. https://arrow-kt.io/docs/integrations/rx2/#observable-comprehensions