In the recipe, we have implemented map in two ways. Both implementations are described here as follows:

- The map function is defined as
*map f (x:xs) = f x : map f xs*. Here, the mapping function`f`is applied to the first element, and then we will recurse using the remaining list and then join the result. Suppose the input list is`[1,2,3,4,5]`, and we apply`f`to it. Then, our map will work in the following way. (*N*ote that the function`f`is categorically not defined concretely to simplify the explanation of**map***.)*As you can see, the result list keeps expanding towards the right (for example,`f 1 : <rest of the list expanded here>`):

map f [1,2,3,4,5] = f 1 : map f [2,3,4,5] = f 1 : (f 2 : map f [3,4,5]) = f 1 : (f 2 : (f 3 : map ...