superior programacion orden funciones funcional funcion ejemplos alto functional-programming terminology

functional-programming - orden - programacion funcional java



Cualquier diferencia entre la función de primera clase y la función de orden superior (5)

Además de las respuestas anteriores, tenga en cuenta que un lenguaje con funciones de primera clase habilita automáticamente la expresión de funciones de orden superior (porque puede pasar funciones como parámetros como cualquier otro valor).

Por otro lado, puede imaginar idiomas que admitan funciones de orden superior, pero que no hagan que las funciones sean de primera clase (y donde los parámetros que son funciones se tratan de manera especial, y son diferentes de los parámetros de valor "ordinarios").

Por lo tanto, la presencia de funciones de primera clase (como función de idioma) implica la presencia de funciones de orden superior, pero no al revés.

Me pregunto si / qué diferencia entre First Class Function y High Order Function .

Leí esas dos páginas de la wiki y se ven bastante similares. Si hablan de lo mismo, ¿por qué necesitan dos terminologías?

Intenté google pero no encontré ninguna cosa útil.


Ellos son diferentes.

Funciones de primera clase

Los valores en un idioma que se manejan de manera uniforme en todas partes se llaman "primera clase". Se pueden almacenar en estructuras de datos, pasar como argumentos o usarse en estructuras de control.

Se puede decir que los lenguajes que admiten valores con tipos de funciones y los tratan igual que los valores sin función tienen "funciones de primera clase".

Funciones de orden superior

Una de las consecuencias de tener funciones de primera clase es que debería poder pasar una función como argumento a otra función. La última función ahora es "orden superior". Es una función que toma una función como argumento.

El ejemplo canónico es "mapa"

map :: (a -> b) -> [a] -> [b] map f [] = [] map f (x:xs) = f x : map f xs

Es decir, toma una función y una matriz, y devuelve una nueva matriz con la función aplicada a cada elemento.

Los lenguajes funcionales (lenguajes en los que las funciones son el principal medio para crear programas) tienen funciones de primera clase. La mayoría también tienen funciones de orden superior (excepciones muy raras son idiomas como Excel, que puede decirse que es funcional, pero no de orden superior).


Hay una diferencia. Cuando dice que un idioma tiene funciones de primera clase, significa que el lenguaje trata las funciones como valores, que puede asignar una función a una variable, pasarla, etc. Las funciones de orden superior son funciones que funcionan con otras funciones, lo que significa que toman una o más funciones como argumento y también pueden devolver una función.

El concepto de "orden superior" se puede aplicar a funciones en general, como funciones en el sentido matemático. El concepto de "primera clase" solo tiene que ver con funciones en lenguajes de programación. Rara vez se usa para referirse a una función, como "una función de primera clase". Es mucho más común decir que "un idioma tiene / no tiene soporte para funciones de primera clase".

Las dos cosas están estrechamente relacionadas, ya que es difícil imaginar un lenguaje con funciones de primera clase que tampoco admitan funciones de orden superior y, a la inversa, un lenguaje con funciones de orden superior pero sin soporte de funciones de primera clase.


Las funciones de primera clase significan todo lo que puede hacer con otros tipos (variables, booleanos, números ...), puede hacerlo con funciones.

Por ejemplo, asignarles variables, pasarlas, crearlas al vuelo.


Las funciones de primera clase son funciones que se tratan como un objeto (o se pueden asignar a una variable).

Las funciones de orden superior son funciones que toman al menos una función de primera clase como parámetro.