In the previous chapter, we looked at some standard Scala effects and identified lots of similarities among them. We also promised to dive deeper and find out what principles underly these commonalities.
Before diving deep into the ocean of abstractions, let's fish for the simpler concepts first to gain some familiarity and skill working with them.
In this chapter, we’ll take a look at a few abstract algebraic structures—structures that are fully identified by the laws defining them. We will start with a simpler yet usable abstraction and advance to more complex topics.
In this chapter, we will take a look at the following topics:
- Semigroup
- Monoid
- Foldable
- Group