Función de orden superior

En matemáticas e informática , las funciones funcionales o de orden superior son funciones que tienen al menos una de las siguientes propiedades:

En matemáticas, se les llama operadores o funcionales. La derivada en cálculo infinitesimal es un ejemplo clásico, porque asocia una función (la derivada) con otra función (cuya función buscamos la derivada).

En el cálculo lambda sin tipo , todas las funciones son de orden superior. En el cálculo lambda tipado, del cual se derivan la mayoría de los lenguajes de programación funcional , las funciones de orden superior son generalmente aquellas cuyo tipo contiene más de una flecha ( Flechas en la programación funcional ). En la programación funcional, se dice que las funciones de orden superior que devuelven otras funciones están curry .

La función mappresente en muchos lenguajes de programación funcional es un ejemplo de una función de orden superior. Toma una función f como argumento y devuelve una nueva función que toma una lista como argumento y aplica f a cada elemento. Otro ejemplo muy común es el de una función de clasificación que toma como argumento una función de comparación; por tanto, el algoritmo de clasificación se separa de la comparación de los elementos a clasificar.

Otros ejemplos de funciones de orden superior son la composición de funciones y la integración matemática .

Alternativas

Los lenguajes de programación pueden lograr los mismos resultados algorítmicos que se obtienen mediante funciones de orden superior mediante la ejecución dinámica de código dentro del alcance de la evaluación. Esto generalmente se hace llamando al comando eval o al comando execute . Sin embargo, este enfoque tiene fallas:

También puede usar macros para lograr ciertos efectos de funciones de orden superior. Pero las macros generalmente no pueden evitar el problema de captura de variables. También pueden resultar en una gran cantidad de código duplicado, lo que puede ser difícil de optimizar para un compilador . Las macros generalmente no están escritas, aunque pueden producir código fuertemente tipado.

Los objetos en un entorno de programación orientado a objetos se pueden utilizar como funciones de orden superior. El método de un objeto actúa esencialmente como una función, y un método puede tomar objetos (que contienen métodos) como argumentos y devolver objetos con métodos. Desafortunadamente, los objetos suelen consumir más recursos que las funciones puras. La sintaxis del lenguaje puede introducir dificultades adicionales: se puede crear un objeto que contenga parámetros que son funciones, y cualquier función resultante puede tener un objeto asociado.

Ver también

enlaces externos

Notas y referencias

  1. Una explicación (breve) beneficiaría al lector no especializado con la noción de tipo y flecha en el contexto de funciones de orden superior.