-
¿Qué es?
- Es un paradigma de programación
- Enfoca la solución del problema en la combinación de funciones sin estado, obtienen un resultado únicamente a partir de los parámetros.
-
Muchos lenguajes ofrecen alguna porción del paradigma funcional
- Puros: Haskell, LISP
- Híbridos: Java, Python, C#, Javascript
-
Variables tipo función
-
¿Qué se guarda en una variable?
-
Programación estructurada
- precio
-
Programación orientada a objetos
- articulo1
-
Programación funcional
- promedio
-
Una variable que guarde una referencia a una función puede ser ejecutada
- imprimir = print
imprimir("Hola")
-
Funciones de orden superior
- Recibe parámetros de tipo función
- Retorna valores de tipo función
-
Funciones lambda
- Es una función anónima de una única línea
- No se programa con def
- Puede ser almacenada en una variable
- Puede ser redactada como un parámetro actual de una función de orden superior
-
Ejemplos
- cuadrado = lambda x: x*x
print(cuadrado(12))
- es_par = lambda n: n % 2 == 0
if es_par(sorteo):
-
Operaciones funcionales
con secuencias
-
filter
- Recibe una función con un parámetro y que devuelva boolean
- Por cada elemento de la secuencia ejecuta la función parámetro
- Retorna una secuencia nueva que incluye los valores para los que la función retornó verdadero
- pares = filter(es_par, numeros)
pares = filter(lambda x: x % 2 == 0, numeros)
-
map
- Recibe una función con un parámetro y que devuelve un valor de cualquier tipo
- Por cada elemento de la secuencia ejecuta la función parámetro
- Retorna una secuencia nueva que contiene los valores retornados por cada ejecución de la función parámetro
- cuadrados = map(cuadrado, numeros)
-
reduce
- Realiza una reducción o pliegue de una secuencia
- Recibe una función de dos parámetros y un retorno del mismo tipo
- Ejecuta la función parámetro con cada valor de la secuencia y el retorno de la ejecución anterior
- Para ejecutarla debe importarse del módulo functools
- suma = reduce(lambda x,y: x + y, numeros)