We have covered quite a lot of material in this chapter. You learned how to improve performance using the lazy
variable, and learned about covariance and contravariance. You also learned how to partially apply functions using currying techniques, and finally, we went through all the different ways of using implicit in Scala. Some concepts, such as currying, are also used in other functional programming languages, such as Haskell.
In the next chapter, we are going to go deeper into type theory by introducing the type classes. Type classes is the concept of grouping the same types sharing a common behavior.