Tandis que la fonction reduce obéit au schéma suivant:
Ces deux schémas matérialisent ce que l'on pense en utilisant
map et reduce: on ne pense pas à leur définition mais à
leur effet: on utilise leur spécification.
Un peu de réflexion montre que map ne peut calculer qu'une
liste de même taille que son entrée ainsi elle ne peut rassembler
(réduire) une liste de résultats en un unique résultat qui ne serait
pas une liste. En revanche, reduce peut remplacer map:
La réduction opère à partir de la liste vide et se contente de
combiner la valeur de l'application de la fonction unaire f sur
l'élément courant devant la liste des autres résultats.
Ainsi reduce permet-elle de retrouver map. Mais il ne
s'ensuit pas qu'il faut utiliser reduce en lieu et place de
map. Les deux schémas de pensée sont différents, traitent des
problèmes séparés et ne doivent être employés que dans leur domaine de
compétence.