this is my journey on learning the functional paradigm in Scala