Haskell

De Wikilibros, la colección de libros de texto de contenido libre.
Saltar a: navegación, buscar
Haskell-logo.png

Plantilla:Print version Plantilla:Collection Plantilla:PDF version

Plantilla:Featured book

Haskell es un lenguaje de programación estandarizado multi-propósito puramente funcional con semánticas no estrictas y fuerte tipificación estática. Su nombre se debe al lógico estadounidense Haskell Curry.

Historia del lenguaje:

La primera versión de Haskell ("Haskell 1.0") se definió en 1990, donde se realizaron una serie de definiciones del lenguaje, que posteriormente culminaría, a finales de 1997, en el estándar conocido como Haskell 98. Dicho estándar se intentó que fuera una versión del lenguaje mínima, estable y portable, junto con una biblioteca estándar asociada para la enseñanza. Luego posteriormente se fueron agregando extensiones al lenguaje y modificaciones aprobadas por el comité que definió Haskell 98, creándose así las distintas implementaciones que se conocen actualmente del lenguaje (Como por ejemplo GHC y Hugs). En enero de 2003, se publicó una versión revisada en "Haskell 98 Language and Libraries: The Revised Report". A principios del 2006 se empezó a definir un sucesor del estándar de Haskell 98, llamado Haskell′ ("Haskell Prime"). Luego en 2010 se lanza Haskell 2010, con varios cambios respecto a haskell 98. Entre ellos:

  • Bloque Do y if then else.
  • Herencia.
  • Comentarios en el código.
  • Interfaz de función foranea.
  • Análisis de dependencias.
  • Se remueve el patrón n+k.

Implementaciones del lenguaje:

Existen varias implementaciones del lenguaje disponible para múltiples sistemas operativos (Entre ellos Windows, Mac os y varias distribuciones de Linux). Todos son bajo licencia open source y cumplen con los estándares de Haskell 98.

  • Glasgow Haskell Compiler: Es un compilador nativo de código libre originalmente desarrollado en la Universidad de Glasgow, en un principio por Simon Peyton Jones y Simon Marlow. El compilador también está escrito en Haskell pero el núcleo de sistema para Haskell está escrito en C y C--. La última versión del compilador cumple con Haskell 98
  • Hugs (Haskell User's Gofer System): Es un intérprete bytecode para el lenguaje funcional Haskell de código abierto. Ofrece compilación rápida y una velocidad de ejecución aceptable. Es la más portable y ligera de todas las implementaciones de Haskell en la actualidad.
  • NHC98 : Es un compilador que cumple con la característica de tener menor tiempo de ejecución que GHC y Hugs, ya que ocupa mucho menos memoria del sistema. Se desarrolló con el fin de instalarse en máquinas antiguas con poco poder de procesamiento y disposición de memoria RAM.
  • Helium: Es un nuevo dialecto de Haskell. Se centró en ser muy fácil de aprender; por ello, no incluye soporte para todo el estándar de Haskell, haciendo que no sea totalmente compatible.

IDEs

Existen varios IDEs y/o plugins que se pueden utilizar para desarrollar aplicaciones en Haskell. La mayoria son open source, pero también existen de índole comercial.

Open Source

  • IntelliJ plugin for Haskell
  • EclipseFP plugin for Eclipse IDE
  • Colorer plugin for Eclipse IDE
  • Leksah
  • KDevelop
  • Vim
  • Emacs
  • Atom

Commercial

  • Haskell for Mac
  • Sublime-Haskell


Haskell se diferencia de varias formas:

  • Haskell es un lenguaje de programación funcional puro. Si llama a la misma función dos veces en dos lugares diferentes con los mismos argumentos, devolverá exactamente el mismo valor en ambas ocasiones.
  • Haskell proporciona un sistema de tipado moderno con características sofisticadas, como clases de tipos y tipos de datos algebraicos generalizados (muy pronto, términos como estos van a sonar bien fuera del lenguaje).
  • Haskell es también un lenguaje perezoso que hace cálculos sólo cuando son necesarios para obtener un resultado final.

Los programadores de Haskell disfrutan de su lenguaje, porque tratar con funciones puras sólo hace el código más fácil de entender y cada correccion de funciones mucho más fácil de analizar e incluso de probar. Por otra parte, el sistema de tipo avanzado ayuda en la captura de errores, tanto de los tontos como de los mas  profundos.

In this book we aim to introduce you both to the Haskell language, from the very basics to advanced features, and to computer programming in general. We urge seasoned programmers to be especially patient with this process. In all likelihood, the languages you are most familiar with differ greatly from Haskell, and habits from those languages might make it more difficult to understand how things work - they are simple, but different. Take learning to see the world through the warped and mathematical mindset of a functional programmer as an adventure in a brave new world, which will bring you understanding valuable far beyond the boundaries of any language.

Overview[editar]

The book is divided into a Beginner's Track, an Advanced Track, and a section called Haskell in Practice which covers more day-to-day issues and uses mostly only items from the Beginner's Track.

Plantilla:Info

Search[editar]

The following box can be used to search for content in the book:

Plantilla:Book search

Beginner's Track[editar]

With the basics of the language and some of the more frequently used libraries, you will be able to build simple programs.

Most chapters contain exercises that help you test your understanding. At the end of each chapter is a link to the solutions, so you can check your accuracy or learn the answers if you are stuck.

Haskell Basics[editar]

Elementary Haskell[editar]

Intermediate Haskell[editar]

Monads[editar]

Advanced Track[editar]

This section introduces wider functional programming concepts such as different data structures and type theory. It will also cover more practical topics like concurrency.

Advanced Haskell[editar]

Fun with Types[editar]

Wider Theory[editar]

Haskell Performance[editar]

Haskell in Practice[editar]

Day-to-day issues of working with Haskell include items such as knowing the standard libraries, building graphical interfaces, and working with databases. You should be able to jump directly to this section from the beginner's track.

Libraries Reference[editar]

General Practices[editar]

Specialised Tasks[editar]

Appendices[editar]

About the book[editar]

Other Haskell tutorials[editar]

  • Haskell Meta-tutorial - the tutorial to find other tutorials
  • Learn You a Haskell for Great Good - Tutorial aimed at beginners who may have experience in imperative programming languages but haven't programmed in a functional language before. Freely available online under a CC-BY-NC-SA license; also released as a conventional book.
  • Real World Haskell - an O'Reilly book, available online at no charge (CC-BY-NC license). Built around case studies of practical applications.
  • Write Yourself a Scheme in 48 Hours - (imported here) An alternate approach to teaching Haskell (and perhaps Scheme), aimed at a more advanced audience (though not necessarily one that knows how to program!)
  • Yet Another Haskell Tutorial - (imported here) is aimed at beginners and takes a practical approach to things.

Additional resources[editar]

Plantilla:Subjects


Estado:    75%