Auxiliados

Características de los lenguajes funcionales

Los lenguajes funcionales se basan en el concepto de función, por tanto, el objeto básico y fundamental que manejamos son las funciones, que se pueden considerar las principales estructuras de control en este tipo de lenguajes. La base fundamental para comprender este tipo de lenguajes consiste en ver los programas y aplicaciones expresados a través de funciones y aplicación entre funciones.

Imagen 1

No hay estado global / Estado global ausente:

No hay variables compartidas que cambien fuera de una función.

Todas las funciones son puras:

Siempre producen el mismo resultado con los mismos argumentos.

Todos los valores son inmutables:

Todos los valores son inmutables y lo único que podemos hacer es generar nuevos valores porque los valores no cambian, solo se crean nuevos en su lugar.

No hay bucles / Sin bucles:

Se usa recursión en lugar de estructuras iterativas tradicionales.

Dato Curioso

Como el modelo de cálculo lambda carecía de “cinta” para conservar el estado del programa, este se tenía que ir regenerando a través de la composición de funciones y la recursividad.

Como Abelson y Sussman comentan en el libro Structure and Implementation of Computer Programs (SICP):

En general, los objetos computacionales pueden tener estructuras muy complejas, y sería extremadamente inconveniente tener que recordar y repetir sus detalles cada vez que queremos usarlas. En lugar de ello, se construyen programas complejos componiendo, paso a paso, objetos computacionales de creciente complejidad.

El intérprete hace esta construcción paso-a-paso de los programas particularmente conveniente porque las asociaciones nombre-objeto se pueden crear de forma incremental en interacciones sucesivas. Esta característica favorece el desarrollo y prueba incremental de programas, y es en gran medida responsable del hecho de que un programa Lisp consiste normalmente de un gran número de procedimientos relativamente simples.