Reactive Programming

as reactive as possible.



Reactive Programming

as reactive as possible by Vyacheslav Goldenshteyn


Mutually exclusive ways?





Complimentary!

            stream a, b, c
            c := a + b
            a.set(2)
            b.set(4)
            print c // prints 6
            b.set(2)
            print c // prints 4
       

Just observer



Welcome to the real world

Event-driven problems:

  • Lots of listeners

Ooops!!!

Be reactive!

            val trimmedName = map(nameInput.text(), String::trim)
            val trimmedSurname = map(surnameInput.text(), String::trim)
            val rawEmail = reduce(trimmedName,
                       trimmedSurname,
                       {f, s -> "$f.$s@$EMAIL_DOMAIN"})
            val validEmail = filter(rawEmail, ::validateEmail, "")
            val status = map(rawEmail, ::validateEmail)
            bind(emailInput.text(), validEmail)
            bind(okButton.enabled(), status)
        

Advantages

  • No more listeners pipelines
  • Clear declarative code
  • No memory leaks
  • A bit of happiness

Houston, we have a problem

Disadvantages

  • Unfriendly debug
  • Eventual consistency
  • Frameworks wrappers are required

Software transactional memory

Kotlin lib is

comming soon!

Thanks!

Feel free to contact:

vyacheslav.goldenshteyn@gmail.com
github.com/myzone
vk.com/myzone
my.zo.ne