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).
filterfaz exatamente isso - filtra os dados. Parece bastante óbvio.
mapviria 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.