In previous chapters, we briefly touched on the map
function as an example of built-in higher-order functions. In this chapter, we will explore this topic further and get familiar with map
, flatMap
, filter
, and reduce
functions in Swift with examples. We will also get familiar with the category theory concepts such as Monad, Functor, and Applicative Functor.
This chapter will cover the following topics with coding examples:
Collections are used everywhere in our day-to-day development, and to be able to use collections declaratively, we need means such as map
, filter
, and reduce
. Before going through these functions that are built-in into Swift, let's explore the theoretical background of these concepts.
The name of Functor comes from the category theory. In the category theory, a Functor contains morphisms such as a map
function, which transforms the Functor. We can think about a Functor as a functional design pattern.
Knowing the category theory is great but we do not have to, so simply put, a Functor is a structure that we can map over. In other words, a Functor is any type that implements the map
function. Examples of Functors are Dictionary
, Array
, Optional
, and Closure
types. Whenever we talk about Functors, the first thing that comes to our mind is that we can call the map
function over them and transform them.
Unlike its name, the concept is very simple. We will talk about the map
function in more detail in the upcoming sections and explore the usage of Functors.