typestar

Lenguajes

Haskell

Un lenguaje puramente funcional con evaluación perezosa y un sistema de tipos estático y fuerte.

Practica Haskell

27 pasos en 1 tours, desde lo básico hasta programas completos.

Los tours

Primera versión
1990
Creado por
The Haskell Committee
Tipado
Estático e inferido; puro por defecto, perezoso por defecto, los efectos en los tipos
Los fragmentos siguen
GHC 9.14
Extensiones de archivo
.hs, .lhs

Para qué sirve

Haskell es la fábrica de donde salen las ideas: la inferencia de tipos, las clases de tipos, las mónadas, la evaluación perezosa y las pruebas basadas en propiedades se resolvieron aquí antes de que Rust, Swift, Scala y TypeScript importaran las partes usables. Bancos y firmas de trading (Standard Chartered, Bitnomial), la verificación de hardware y compiladores de otros lenguajes (PureScript, Elm, Agda) corren sobre él en producción, casi siempre donde equivocarse sale caro.

La experiencia diaria es una conversación con el compilador: escribes una firma de tipo, el compilador te señala cada lugar donde el programa no cuadra, y refactorizar es seguir los errores hasta que se acaben. La pureza significa que la firma de una función te dice todo lo que puede hacer — IO aparece en el tipo o la función no puede ejecutarlo — y por eso 'si compila, entonces funciona' es un chiste recurrente con una cantidad inusual de verdad adentro.

Las barreras famosas — la pereza, las mónadas, un ecosistema que da por sentado que lees artículos — son más chicas que su fama dentro del núcleo GHC2021 que ejercitan estos fragmentos: ecuaciones, coincidencias de patrones, folds, tipos de datos algebraicos y notación do. Lo que enseña ese subconjunto se transfiere a todos lados: cada Optional, cada Result, cada encadenamiento de map/filter/reduce y cada switch exhaustivo de una base de código moderna es Haskell con el número de serie limado.

De dónde viene

A fines de los años ochenta una docena de grupos de investigación tenía cada uno su propio lenguaje funcional perezoso, y ninguno tenía usuarios. Una reunión de 1987 en la conferencia FPCA nombró un comité para definir un solo lenguaje común; Haskell 1.0 — que lleva el nombre del lógico Haskell Curry — apareció en 1990, con un reporte que deliberadamente no pertenecía a ninguna empresa ni laboratorio.

El reporte de 1998 ('Haskell 98') congeló un núcleo estable, y el Glasgow Haskell Compiler pasó a ser la implementación de facto, con un sistema de extensiones donde aterrizaba primero la investigación nueva sobre sistemas de tipos. Los artículos de Simon Peyton Jones y Philip Wadler de esa época — las mónadas para IO, las clases de tipos — convirtieron maquinaria académica en ingeniería que funciona, y 'evitar el éxito a toda costa' quedó como la declaración de principios socarrona de la comunidad.

GHC2021 empaquetó dos décadas de extensiones ya asentadas en un conjunto por defecto moderno, y el lenguaje se profesionalizó sin ruido: una fundación, una cadencia estable de versiones y usuarios industriales que lo eligieron a propósito. Su papel de laboratorio de investigación sigue — los tipos lineales y los tipos dependientes llegan por el mismo pipeline que en su momento entregó las mónadas — mientras sus exportaciones siguen apareciendo en las notas de versión de todos los lenguajes masivos.

Cómo se siente teclearlo

Haskell se teclea en ráfagas cortas con mucho tráfico de operadores: :: y -> en cada firma, $ y . encadenando llamadas, <- y = en los bloques do, y backticks que vuelven infija a una función. Hay casi nada de paréntesis comparado con un Lisp y casi nada de llaves comparado con un C, pero la indentación carga peso — las cláusulas where y los bloques do tienen que alinearse exacto, y la alineación de los fragmentos es parte del ejercicio. Ojo con el apóstrofo de nombres como total' — legal, idiomático y fácil de perder.

Practica Haskell

27 pasos en 1 tours, desde lo básico hasta programas completos.

Documentación oficial

Otros lenguajes