Una Introducción agradable a Haskell
siguiente inicio
El propósito al escribir este tutorial no es enseñar programación, ni siquiera la programación funcional. Por el contrario, el objetivo es servir como un suplemento al informe de Haskell (the Haskell Report) [4] (en lo sucesivo, simplemente el Informe), que es, por otro lado, una densa exposición técnica. Nuestro objetivo es proporcionar una introducción "agradable" a Haskell para aquellos que tienen experiencia con al menos otro lenguaje, preferiblemente funcional (o "casi-funcional, como ML o Scheme). Si el lector desea aprender más sobre el estilo funcional, recomendamos la lectura del texto de Bird Introduction to Functional Programming [1], o el libro de Davie An Introduction to Functional Programming Systems Using Haskell [2]. Un estudio pormenorizado de los lenguajes para la programación funcional y sus técnicas, incluyendo algunos principios de diseño utilizados en Haskell, puede verse en [3].
El lenguaje Haskell ha evolucionado de forma significativa desde su nacimiento en 1987. Este tutorial está enfocado al Haskell 98. Las versiones anteriores han quedado obsoletas por lo que recomendamos a los usuarios de Haskell a que usen Haskell 98. Existen varias extensiones de Haskell 98 que han sido implementadas eficientemente. Estas no forman parte formalmente de Haskell 98 y no serán tratadas en este tutorial.
Nuestra estrategia general para introducir las características del lenguaje son: motivar la idea, definir algunos términos, dar ejemplos, y dar referencias precisas al Informe para más detalles. Sin embargo, sugerimos que el lector ignore absolutamente los detalles hasta completar la lectura de ésta introducción. Por otro lado, el Prelude estándar de Haskell (véase el Apéndice A del Informe) y las librerías estándarizadas (localizables en el Informe de librerías (Library Report)[5]) contiene numerosos ejemplos útiles de código Haskell; recomendamos una lectura cuidadosa de estos ejemplos una vez completada la lectura del tutorial. Con ello observará la sensación agradable del código real de Haskell, y también se acostumbrará al conjunto estándar de funciones y tipos predefinidos.
Finalmente, en http://haskel.org podemos encontrar información sobre el lenguaje Haskell y sus implementaciones.
[También hemos tomado la decisión de no exponer demasiado las reglas sintácticas al principio. Más bien, las introducimos de forma incremental según sean demandadas por los ejemplos, y entre corchetes, tal como éste párrafo. Esto contrasta con el orden de exposición del Informe, aunque éste contiene una fuente de detalles bien documentada (las referencias tales como "Informe-Sección 2.1" se refieren a las secciones del Informe).]
Haskell es un lenguaje de programación fuertemente tipado (en términos anglófilos, a typeful programming language; término atribuido a Luca Cardelli.) Los tipos son penetrantes (pervasive), y el principiante deberá acostumbrarse desde el comienzo a la potencia y complejidad del sistema de tipos de Haskell . Para aquellos lectores que conozcan únicamente lenguajes no tipados, como Perl, Tcl, o Scheme, esto puede ser una dificultad adicional; para aquellos familiarizados con Java, C, Modula, o incluso ML, el acomodo a nuestro lenguaje será más significativo, puesto que el sistema de tipos de Haskell es diferente y algo más rico. En cualquier caso, la programación fuertemente tipada forma parte de la experiencia de la programación en Haskell, y no puede ser evitada.