Programación Funcional: Funciones Puras e Inmutabilidad

Clase 9 de 47Curso Básico de Kotlin 2019

Comencemos nuestro primer encuentro con la programación funcional. Primero entendamos qué es.

Como primera declaración debemos decir que la programación funcional es un paradigma de programación, esto significa, literalmente, un estilo de resolver problemas para plasmar la solución con código. Cuando escuchas la palabra paradigma probablemente lo primero que viene a tu mente es el Orientado a Objetos, y sí, precisamente ese es otro estilo de resolución de problemas. Programar de manera funcional significa que lo haremos de forma declarativa, es decir nos preocuparemos más por el qué que por el cómo.

Este estilo de programación tiene que ver con usar funciones todo el tiempo, podemos usarlas como parámetros de otras funciones e incluso asignarlas a variables. En este paradigma casi todo lo que habíamos aprendido sobre programación dejaremos de usarlo. Nos olvidaremos de usar variables como algo que puede cambiar, en su lugar creeremos en la inmutabilidad. Los bucles for, while, do while, etc. dejarán de existir pues ahora tendremos recursividad, además que, como ya dijimos, las funciones serán tan especiales que estas deberán ser funciones puras por definición.

Funciones Puras

Una función pura, deberá cumplir con dos cosas específicamente.

Primero. Dados los mismos parámetros de entrada la función debe retornar siempre el mismo valor.

Segundo. La función no debe tener efectos colaterales, es decir no debe haber nada en el entorno que la altere. Como por ejemplo, variables globales que fue el ejemplo que vimos en la clase anterior.

Inmutabilidad

Hablando de variables, hace un momento te comenté que estas las dejaremos de tratar como tal y fomentaremos el uso de variables de tipo constante, o variables inmutables.

La inmutabilidad es uno de los principios de la programación funcional donde nos promueve la ausencia de estado mutable o también conocido como Stateless, para entender esto mejor lo primero que debemos comprender es qué cosa se considera estado.

Estado: será cualquier dato que se pueda guardar y modificar posteriormente en memoria

  • Una variable
  • Un archivo
  • Un socket

Para el caso de las variables en Kotlin preferirémos declararlas como ´val´ en vez de ´var´. Una buena práctica en nuestros programas es nunca tener variables de tipo ´var´ declaradas de manera global pues estas van en contra de la inmutabilidad, aunque sé que a veces es complicado prescindir de ellas en el resto del programa. Su mejor lugar es cuando están declaradas de manera local al método.

A lo largo del curso seguiremos aprendiendo pequeñas píldoras de conocimiento sobre la programación funcional.