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 en 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 las funciones en general, como las funciones en el sentido matemático. El concepto de "primera clase" solo tiene que ver con funciones en lenguajes de programación. Raramente se usa cuando se hace referencia 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 de 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 no admitiera también funciones de orden superior y, a la inversa, un lenguaje con funciones de orden superior pero sin soporte de funciones de primera clase.
int
ochar
, en el sentido de que no pueden definirse explícitamente (por un cuerpo de función) donde lo desee.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 como mínimo una función de primera clase como parámetro o devuelven al menos una función de primera clase.
fuente
Son diferentes
Funciones de primera clase
Los valores en un idioma que se manejan de manera uniforme se denominan "primera clase". Pueden almacenarse en estructuras de datos, pasarse como argumentos o usarse en estructuras de control.
Se puede decir que los lenguajes que admiten valores con tipos de función y los tratan igual que los valores que no son de 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 es ahora "orden superior". Es una función que toma una función como argumento.
El ejemplo canónico es "mapa"
Es decir, toma una función y una matriz, y devuelve una nueva matriz con la función aplicada a cada elemento.
Lenguajes funcionales: los idiomas donde las funciones son los medios principales para crear programas, todos tienen funciones de primera clase. La mayoría también tiene funciones de orden superior (excepciones muy raras son lenguajes como Excel, que se puede decir que son funcionales, pero no de orden superior).
fuente
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 lenguajes que admitan funciones de orden superior, pero no hacen que las funciones sean de primera clase (y donde los parámetros que son funciones se tratan especialmente y son diferentes de los parámetros de valores "ordinarios").
Entonces, la presencia de funciones de primera clase (como una característica del lenguaje) implica la presencia de funciones de orden superior, pero no al revés.
fuente
Las funciones de primera clase pueden:
High Order Function es una función que devuelve otra función.
Por ejemplo:
fuente
Las funciones de primera clase significan todo lo que puedes hacer con otros tipos (variables, booleanos, números ...), puedes hacerlo con funciones.
Por ejemplo, asígnelos a variables, páselo, créelos sobre la marcha.
fuente