So today I went on with Martin Odersky’s course and just completed week 5.
The functional equivalent of operator overloading is awesome and I believe
it allows more verbose and consistent definition of classes which will behave as expected
if I plug in normal operators. The definition of functions is now more and more
tending towards how we define them in maths : f: [R, R] => R.
I also read about the object oriented implementation of functions and I believe have understood
functional programming paradigm to a great degree. Scala’s elegant combination of both fp and oop
allows us to implement programs in a better way. Scala’s pattern matching is also good enough to allow
us to implement recursive algorithms in a better way.
I have also compiled a program highlighting the collections in scala: