¿Qué es una función de primera clase?
"función de primera clase" es un término que se puede aplicar en la programación de computadoras y la informática a un lenguaje de programación de computadoras si su tratamiento de funciones se adhiere a un conjunto de pautas, aunque el alcance completo y la profundidad de estas pautas no se acuerdan formalmente. Para tener un lenguaje de programación de computadoras de la función de primera clase, la característica principal que debe ser compatible es la capacidad de aprobar funciones como argumentos a otras funciones. Una función también debe poder asignarse a una variable para que pueda almacenarse. Otras propiedades utilizadas para determinar qué constituye una función de primera clase incluyen la capacidad de generar dinámicamente una función en tiempo de ejecución y la capacidad del lenguaje para tener una función como valor de retorno de otra función. Los idiomas que admiten la arquitectura de funciones de primera clase permiten un alto nivel de abstracción y también, en algunos casos, proporcionan un mecanismo para la generación de código dinámico de tiempo de ejecución.
Cuando el término "función" se usa en un sentido libremente definido, el concepto de aprobar una función dentro de un programa a través de variables no es necesariamente exclusiva de los idiomas que implementan de manera nativa el soporte de la función de primera clase. La capacidad de pasar bloques de código a funciones, o devolver el código no dinámico de una función, se puede hacer fácilmente en muchos lenguajes de programación a través de diferentes mecanismos. Sin embargo, una de las partes estrictas de la definición de un lenguaje de función de primera clase es que el manejo de funciones como variables debe hacerse de forma nativa, sin el uso de metadatos como las define condicionales y sin llamar a un compilador para recompilar un código. El término "función" también se utiliza para referirse a bloques de código independientes que se llaman por su cuenta, lo que significa que no incluyen los bloques de código conocidos como métodos en lenguajes de programación orientados a objetos o los bloques a veces llamados procedimientos en otros idiomas.
.Cuando un idioma esDiseñado para permitir el código de función de primera clase, algunos patrones de diseño se pueden implementar más directamente que en otros idiomas. Una función puede recibir una función como una variable, y luego construir una nueva función y devolver la nueva función al código de llamadas, por lo que esto crea un mecanismo para la creación del código de programa en tiempo de ejecución. Esto también puede hacer posible el uso de funciones de inutilización de usuario en tiempo real dentro del idioma sin el uso de procesos como la reflexión o la evaluación.
Algunos de los usos más básicos para la arquitectura de funciones de primera clase incluyen la creación de funciones genéricas que se pueden reutilizar fácilmente e implementar algoritmos matemáticos recursivos que pueden auto-modificar sus ecuaciones a medida que avanzan. Un uso similar y más avanzado para los mecanismos de primera clase es la implementación del polimorfismo en los idiomas en los que no se implementa específicamente. Esto puede permitir que las funciones se llamen con la misma firma de la función, pero ejecute el código basado en el contexto en WHICH se llamaba, a veces pasando una función clave a la función polimórfica.