Read this for more on Monads: https://github.com/sjuvekar/reactive-programming-scala/blob/master/Monads.md
Reactive systems need the objects to maintain and manipulate states.Read this to see what mutable states mean in functional programming context: https://github.com/sjuvekar/reactive-programming-scala/blob/master/MutableStates.md