As a Java or Scala-experienced developer, I guess you are already familiar with some of the OOP design patterns. You may be not aware of Scala Functional Design Patterns.
Scala source code or applications use the following Functional Design Patterns extensively:
- Monoid
- Functor
- Monad
All these three terminologies come from Mathematics Category Theory (MAT). Let's delve into each of these, one by one in the following sections:
- Monoid: In Scala, Monoid is a type class or data structure with the following two rules:
- Associative rule:
(A1 Op A2) Op A3 == A1 Op (A2 Op A3)
-
- Identity rule: This rule states that, suppose we make a call to a function with two elements. This Identity rule states if that function returns a second element as is, without any change, then that first element is known as an Identity element:
Left...