Summary
In this chapter, we covered the core concepts of functional programming like Pure functions, immutability, and higher-order functions. We introduced some of the design patterns that are prevalent in large functional programs. Finally, we covered two popular functional programming libraries called Cats and Doobie, and used them to write some interesting programs.
In the next chapter, we will cover how Scala makes it possible to write powerful Domain-Specific Languages (DSLs) by providing a few interesting language features. We'll have a brief look at what DSLs are in general terms. We'll also cover a DSL that you'll very likely be using if you're going to work with Scala professionally. Finally, you will implement your own DSL.