The programming model MapReduce consists of 2 procedures, map and reduce. Why do we need the map part, when we can simply do the mapping inside reduce function.

Consider the following pseudocode:

```
result = my_list.map(my_mapper).reduce(my_reducer);

```

This could be shortened to

```
result = my_list.reduce(lambda x : my_reducer(my_mapper(x)));

```

How can the 1st approach be more preferred than the 2nd one, while the 1st approach requires one more pass through the data? Is my code example oversimplifying?