Algumas funções de ordem superior para operar em listas ou matrizes foram adotadas ou reinventadas repetidamente. O mapa de funções , dobra [ l | r ] e filter são encontrados juntos em várias linguagens de programação, como Scheme, ML e Python, que não parecem ter um ancestral comum. Eu vou com esses três nomes para manter a pergunta focada.
Para mostrar que os nomes não são universais, aqui está uma amostra de nomes para funcionalidade equivalente em outros idiomas. O C ++ transformou em vez de mapear e remove_if em vez de filtrar (invertendo o significado do predicado). O Lisp possui o mapcar em vez do mapa , remove-se-não em vez do filtro e reduz em vez da dobra (Algumas variantes modernas do Lisp têm mapa, mas isso parece ser um formulário derivado .) O C # usa o Select em vez do filtro . Os nomes de c # vieram do SQL via LINQ map e Where em vez de e, apesar das alterações de nome, sua funcionalidade foi influenciada por Haskell, que foi influenciado por ML.
Os nomes mapear , dobrar e filtrar são comuns, mas não universais. Isso sugere que eles foram emprestados de uma fonte influente para outras línguas contemporâneas. De onde vieram esses nomes de função?
mapcar
é um mapa, no carro (e não no CDR).
filter
faz exatamente isso - filtra os dados. Parece bastante óbvio.
map
viria da teoria matemática dos conjuntos, que descreve transformações de conjuntos como "mapeamentos" do domínio de entrada para o intervalo de saída.