Haskell
(pronunciado /hæskəl/)1 es un lenguaje de programación estandarizado
multi-propósito, funcionalmente puro, con evaluación no estricta y memorizada,
y fuerte tipificación estática. Su nombre se debe al lógico estadounidense
Haskell Curry, debido a su aportación al cálculo lambda, el cual tiene gran
influencia en el lenguaje. En Haskell, "una función es un ciudadano de
primera clase" del lenguaje de programación. Como lenguaje de programación
funcional, el constructor de controles primario es la función. El lenguaje
tiene sus orígenes en las observaciones de Haskell Curry y sus descendientes
intelectuales.
En los años
1980 se constituyó un comité cuyo objetivo era crear un lenguaje funcional que
reuniera las características de los múltiples lenguajes funcionales de la
época, el más notable Miranda, y resolviera la confusión creada por la
proliferación de los mismos.
El lenguaje
evoluciona rápidamente y (ver más abajo) como los representantes actuales del
estándar de facto. El último estándar oficial es: Haskell 2010, cuyas
diferencias respecto al anterior estándar Haskell 98 son:
Nuevas
características del lenguaje:
Interfaz de
funciones foráneas (FFI), que permite usar código C en un programa Haskell y
código Haskell en un programa C. Un ejemplo explicativo se puede encontrar aquí
Nombres
jerárquicos para los módulos, por ejemplo Data.Bool.
Guardianes
con patrones.
Características
eliminadas del lenguaje:
Sintaxis de
patrones (n+k). Con lo cual, la siguiente definición de la función factorial no
es válida en Haskell 2010 y posteriores: fact (n+1) = (n+1) * fact n.
Las
características más interesantes de Haskell incluyen el soporte para tipos de
datos y funciones recursivas, listas, tuplas, guardas y encaje de patrones. La
combinación de las mismas pueden resultar en algunas funciones casi triviales
cuya versión en lenguajes imperativos pueden llegar a resultar extremadamente
tediosas de programar. Haskell es, desde 2002, uno de los lenguajes funcionales
sobre los que más se ha investigado. Se han desarrollado muchas variantes:
Versiones
paralelas del MIT y Glasgow, ambas denominadas Parallel Haskell.
Más versiones
paralelas y distribuidas de Haskell llamadas Distributed Haskell (anteriormente
Goffin) y Eden.
Una versión
con ejecución especulativa: Eager Haskell.
Varias
versiones orientadas a objetos: Haskell++, O'Haskell y Mondrian.
Una versión
educativa llamada Gofer desarrollada por Mark Jones que fue suplantada por Hugs
(ver abajo).
Para
información más detallada, referirse al sitio oficial o a los enlaces al final
de este artículo.
Historia
A partir de
la publicación de Miranda, en 1985, los lenguajes funcionales proliferaron. En
1987, existían compitiendo entre ellos más de una docena de lenguajes de
programación puros funcionales no estrictos. Durante la conferencia sobre
Lenguajes de Programación Funcional y Arquitecturas de Ordenador (FPCA '87) en
Portland, Oregón, se mantuvo un encuentro durante el cual se alcanzó un fuerte
consenso entre sus participantes para formar un comité que definiese un
estándar abierto para tales lenguajes. Esto se hizo con el propósito expreso de
consolidar los lenguajes existentes en uno único que sirviera como base para la
investigación futura en diseño de lenguajes.2 La primera versión de Haskell
("Haskell 1.0") se definió en 1990.3 Los esfuerzos del comité
resultaron en una serie de definiciones del lenguaje, que culminaron a finales
de 1997 en Haskell 98, que se intentó fuera una versión del lenguaje mínima,
estable y portable, junto con una biblioteca estándar asociada para la
enseñanza, y como base de futuras extensiones. El comité expresamente aprobó la
creación de extensiones y variantes de Haskell 98 mediante la adición e
incorporación de características experimentales.
En enero de
1999, el estándar del lenguaje Haskell 98 se publicó en "The Haskell 98
Report". En enero de 2003, se publicó una versión revisada en
"Haskell 98 Language and Libraries: The Revised Report".4 El
lenguaje continúa evolucionando rápidamente, con las implementaciones de Hugs y
de GHC (véase más adelante), que representan el actual estándar de facto. A
principios del 2006 comenzó el proceso de definición de un sucesor del estándar
de Haskell 98, llamado informalmente Haskell′ ("Haskell Prime").5
Este proceso intenta producir una revisión menor de Haskell 98.6 En 2010 se
lanza Haskell 2010.
Comentarios
Publicar un comentario