Este post trata de traer luz a un par de conceptos tales como Valores, Expresiones, Tipos y Funciones que al comenzar a enteder el paradigma de la programación funcional puede traernos algunos dolores de cabeza, trataré de ser conciso y sin más que agregar te invito a seguir leyendo.

¿Cuál es la diferencia entre valor y expresión?

Los conceptos de valor y expresión estan fuertemente entrelazados es por ello que es común que se confundan, para entederlo mejor lo que tenemos que tener en claro es que un valor es una abstracción, y como tal no existe en el mundo físico. Por ejemplo el número dos, ¿Podemos ver o tocar al número? Y si tu respuesta es sí, es ahi la confusión, lo que pensamos que podemos ver y tocar es la representación del numero dos. Entonces si ponemos un ejemplo más visual lo que tenemos es lo siguiente:

 

 

El valor no puede ser identificado en el mundo abstracto, es por ello que usé una bolita, lo que podemos hacer en el mundo fisico es representarlo mediante expresiones.

Valores Básicos

El ejemplo anterior es una simplificación de los dos mundos, pero ambos son infinitos y tenemos abstracciones que no son solo los números:

  • True False
  • 'a', 'b', 'c', ...
  • (1,1), (2,2), (3,3), ..
  • [1,2,3],...

Tipos

Relacionando el concepto con el listado anterior podemos ver que se pueden unir a los valores en grupos, eso es lo que representa un tipo, son porciones de valores del mundo abstracto que se agrupan en colecciones que nos sirven para definir los argumentos y los retornos que puede tener una función.

Funciones

Las funciones no son más que asociaciones únicas entre un conjunto de datos de entrada con un conjunto de datos de salida, Es decir que un valor en el mundo abstracto se relaciona con un único elemento del mismo mundo. Es decir transforman datos de entrada en datos de salida.

Estos conjuntos de datos se corresponden con un tipo que puede o no ser diferente para el argumento que para el retorno. 

Entonces, ¿Por qué una función es un valor?, esta pregunta se responde por el hecho de que una función es una abstracción es decir no existe en el mundo físico y puede ser representada mediante expresiones. Tal como en caso de los números, las funciones pueden tener más de una representación:

doble x = x + x
doble' x = 2 * x

Matemáticamente podemos decir que doble = doble' y ambas denotan la misma función.

Gracias haber leido este post, espero que se hayan resuelto algunas dudas con respecto a estos conceptos, me gustó mucho escribirlo.

Mandanos tus sugerencias

Ayudanos con ideas para los artículos de este blog a contacto@somospnt.com

¡Seguínos en nuestras redes sociales para enterarte de los últimos posts!