Função de primeira classe
Sign in to saveAlso known as first-class function
programming language feature that allows manipulating functions like other values
Article · Português
Em ciência da computação, diz-se que uma linguagem de programação tem funções de primeira classe se ela trata as funções como cidadãos de primeira classe. Isso significa que a linguagem suporta a passagem de funções como argumentos para outras funções, retornando-as como os valores de outras funções e atribuindo-as a variáveis ou armazenando-as em estruturas de dados. Alguns teóricos da linguagem de programação também requerem suporte para (literais de função). Em linguagens com funções de primeira classe, os nomes das funções não têm nenhum estado especial. Eles são tratados como variáveis comuns com um . O termo foi cunhado por no contexto de "funções como cidadãos de primeira classe" em meados da década de 1960. As funções de primeira classe são uma necessidade para o estilo de programação funcional, no qual o uso de é uma prática padrão. Um exemplo simples de função de ordem superior é a função , que recebe, como seus argumentos, uma função e uma lista, e retorna a lista formada pela aplicação da função a cada membro da lista. Para que uma linguagem suporte map, ela deve suportar a passagem de uma função como um argumento. Existem certas dificuldades de implementação em passar funções como argumentos ou retorná-las como resultados, especialmente na presença de introduzidas em funções aninhadas e . Historicamente, essas dificuldades foram chamados de , o nome vindo de "function argument" (argumento de função, em português). Nas primeiras linguagens imperativas, esses problemas foram evitados por não suportar funções como tipos de resultado (por exemplo, ALGOL 60, Pascal) ou omitir funções aninhadas e, portanto, variáveis não locais (por exemplo, C). A antiga linguagem funcional Lisp adotou a abordagem de , onde variáveis não locais se referem à definição mais próxima daquela variável no ponto onde a função é executada, ao invés de onde ela foi definida. O suporte adequado para funções de primeira classe com escopo léxico foi introduzido em Scheme e requer o tratamento de referências a funções como clausuras em vez de vazios, que, por sua vez, torna a coleta de lixo uma necessidade.
Abstract from DBpedia / Wikipedia · CC BY-SA