Programación Funcional


 El tipo de datos 

Resultado de imagen para programacion funcional mapa conceptual

Python como varios otros lenguajes modernos como ser ruby, scala, etc., tiene influencia del paradigma funcional. No vamos acá a enseñar el paradigma funcional, pero sí sucede que varias de estas ideas están relacionadas con la manipulación de estructuras de datos contenedoras, como las listas, diccionarios, sets, etc. 

Entonces en esta sección vamos a ver algunas ideas que, luego de entenderlas aplicadas sobre las colecciones, podremos utilizarlas luego para modelar cualquier problema. Y tendremos un conjunto de "herramientas" para pensar soluciones a problemas. 

En general estas ideas llevan a combinar el paradigma estructurado y objetos con la simplicidad y legibilidad del paradigma funcional y declarativo.


Funciones 


En general las funciones que veníamos viendo hasta el momento se denominan funciones de primer nivel. Porque existe la idea de funciones de orden superior. Que se refiere a funciones que: 

 Reciben otra función como uno o varios parámetro/s.

O bien retornan otra función como resultado. Y claro, se llaman de orden superior porque operan sobre funciones. El dominio o la imagen de estas funciones son funciones. Veamos un ejemplo. Empezamos por uno simple, para no decir bastante "pavo", 

porque no es justamente para lo que uno usaría estas funciones realmente. Supongamos que tenemos una función que sirve para "saludar". Símplemente hace un print.


 Intervalos 

Funciones devuelven siempre el mismo valor 
 Los lenguajes funcionales puros tienen la propiedad de transparencia referencial 

 Como consecuencia, en programación funcional, una función siempre devuelve el mismo valor cuando se le llama con los mismos parámetros 
Las funciones no modifican ningún estado, no acceden a ninguna variable ni objeto global y modifican su valor Diferencia entre declaración y modificación de variables 

En programación funcional pura una vez declarada una variable no se puede modificar su valor 

En algunos lenguajes de programación (como Scala) este concepto se refuerza definiendo la variable como inmutable (con la directiva val).

 En programación imperativa es habitual modificar el valor de una variable en distintos pasos de ejecución









Comentarios