Los orgenes tericos del modelo funcional se remontan a los aos 30 en los cuales
Church propuso un nuevo modelo de estudio de la computabilidad mediante el clculo
lambda. Este modelo permita trabajar con funciones como objetos de primera clase. En
esa misma poca, Shnfinkel y Curry construan los fundamentos de la lgica
combinatoria que tendr gran importancia para la implementacin de los lenguajes
funcionales.
El clculo lambda es un sistema formal diseado para investigar la definicin de funcin,
la nocin de aplicacin de funciones y la recursin. Fue introducido por Alonzo
Church y Stephen Kleene en la dcada de 1930. Church us el clculo lambda
en 1936 para resolver el Entscheidungsproblem. Puede ser usado para definir de manera
limpia y precisa qu es una "funcin computable
Se puede considerar al clculo lambda como el ms pequeo lenguaje universal de
programacin. Consiste en una regla de transformacin simple (sustitucin de variables) y
un esquema simple para definir funciones.
El clculo lambda es universal porque cualquier funcin computable puede ser expresada
y evaluada a travs de l. Por lo tanto, es equivalente a las mquinas de Turing. Sin
embargo, el clculo lambda no hace nfasis en el uso de reglas de transformacin y no
considera las mquinas reales que pueden implementarlo. Se trata de una propuesta ms
cercana al software que al hardware.
Hacia 1950, John McCarthy dise el lenguaje LISP (List Processing) que utilizaba las
listas como tipo bsico y admita funciones de orden superior. Este lenguaje se ha
convertido en uno de los lenguajes ms populares en el campo de la Inteligencia Artificial.
Sin embargo, para que el lenguaje fuese prctico, fue necesario incluir caractersticas
propias de los lenguajes imperativos como la asignacin destructiva y los efectos laterales
que lo alejaron del paradigma funcional. Actualmente ha surgido una nueva corriente
defensora de las caractersticas funcionales del lenguaje encabezado por el dialecto
Scheme, que aunque no es puramente funcional, se acerca a la definicin original de
McCarthy.
En 1964, Peter Landin dise la mquina abstracta SECD para mecanizar la evaluacin
de expresiones, defini un subconjunto no trivial de Algol-60 mediante el clculo lambda e
introdujo la familia de lenguajes ISWIM (If You See What I Mean) con innovaciones
sintcticas (operadores infijos y espaciado) y semnticas importantes.
En 1978 J. Backus (uno de los diseadores de FORTRAN y ALGOL) consigui que la
comunidad informtica prestara mayor atencin a la programacin funcional con su
artculo Can Programming be liberated from the Von Neumann style? en el que criticaba
las bases de la programacin imperativa tradicional mostrando las ventajas del modelo
funcional. Adems Backus dise el lenguaje funcional FP (Functional Programming) con
la filosofa de definir nuevas funciones combinando otras funciones.
Haskell no tiene mucho uso comercial, ni est en la cresta de la ola de Internet. Sin
embargo, se debe considerar que saber programar en Haskell le har un mejor
programador en general. Pues cuando tenga que disear o programar en otros
lenguajes, aplicara lecciones que he aprendera en Haskell.