as reactive as possible.


stream a, b, c
c := a + b
a.set(2)
b.set(4)
print c // prints 6
b.set(2)
print c // prints 4
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)