Difference between revisions of "Es/Librerias y Herramientas/Desarrollo de programas"

From HaskellWiki
Jump to navigation Jump to search
(ln haste)
 
(11 intermediate revisions by 3 users not shown)
Line 15: Line 15:
   
 
;[http://www.cs.vu.nl/Strafunski/ Strafunski]
 
;[http://www.cs.vu.nl/Strafunski/ Strafunski]
:Strafunski es un paquete de Haskell que provee soporte para programación genérica en Haskell, basado en el concepto de estrategia funcional. Consiste en una libreria de combinadores (StrategyLib) y un precompilador (DrIFT-Strafunski).
+
:Strafunski es un paquete de Haskell que provee soporte para programación genérica en Haskell, basado en el concepto de estrategia funcional. Consiste en una librería de combinadores (StrategyLib) y un precompilador (DrIFT-Strafunski).
   
 
;[http://darcs.haskell.org/~lemmih/zerothHead/ Zeroth]
 
;[http://darcs.haskell.org/~lemmih/zerothHead/ Zeroth]
Line 34: Line 34:
   
 
;[http://www.dtek.chalmers.se/~d99josve/tagsh.tar.gz tagsh]
 
;[http://www.dtek.chalmers.se/~d99josve/tagsh.tar.gz tagsh]
:Una versión del programa tags para Haskell. Usa las librerías hssource estandarizada y posix, y funciona con GHC 5.02.1. Se ha probado que funciona para bim y nedit.
+
:Una versión del programa tags para Haskell. Usa las librerías hssource estandarizada y posix, y funciona con GHC 5.02.1. Se ha probado que funciona para vim y nedit.
   
 
=== Transformación de programas ===
 
=== Transformación de programas ===
   
 
;[http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html HaRe -- The Haskell Refactorer]
 
;[http://www.cs.kent.ac.uk/projects/refactor-fp/hare.html HaRe -- The Haskell Refactorer]
:Refactoring mecánico de código Haskell (sobrepasa fronteras de módulos). HaRe ahora soporta muchos refactorings, como renombrado de identificadores, movimiento/introducción/inlining de definiciones, etc. Estos refactorings no están limitados a sólo un módulo. HaRe se puede accedar desde tanto Vim como Emacs
+
:Refactoring mecánico de código Haskell (sobrepasa fronteras de módulos). HaRe ahora soporta muchos refactorings, como renombrado de identificadores, movimiento/introducción/inlining de definiciones, etc. Estos refactorings no están limitados a sólo un módulo. HaRe se puede acceder desde tanto Vim como Emacs.
   
 
;[http://www.isi.edu/~hdaume/HAllInOne/ Haskell All-In-One]
 
;[http://www.isi.edu/~hdaume/HAllInOne/ Haskell All-In-One]
:Esta utilidad de Haskell toma un programa implementado en múltiples módules y lo convierte en uno solo.
+
:Esta utilidad de Haskell toma un programa implementado en múltiples módulos y lo convierte en uno solo.
   
 
;[http://wiki.di.uminho.pt/wiki/bin/view/Alcino/DrHylo DrHylo]
 
;[http://wiki.di.uminho.pt/wiki/bin/view/Alcino/DrHylo DrHylo]
Line 50: Line 50:
   
 
;[http://eclipsefp.sourceforge.net/ Haskell support for Eclipse] (Soporte Haskell para Eclipse)
 
;[http://eclipsefp.sourceforge.net/ Haskell support for Eclipse] (Soporte Haskell para Eclipse)
:Eclipse es una plataforma IDE abierta, extensible, para "todo y nada en particular". Está implementado en Java y funciona en varias plataformas. El IDE Java construido sobre él ya sea ha hecho muy popular entre los desarrolladores Java. Las herramientas de Haskell lo extienden con soporta para edición (coloreo de sintaxis, asistencia de código), compilación y ejecución de programas Haskell desde el IDE. Más características, como navegación de código fuente y módulos, se agregarán en el futuro.
+
:Eclipse es una plataforma IDE abierta, extensible, para "todo y nada en particular". Está implementado en Java y funciona en varias plataformas. El IDE Java construido sobre él ya se ha hecho muy popular entre los desarrolladores Java. Las herramientas de Haskell lo extienden con soporte para edición (coloreo de sintaxis, asistencia de código), compilación y ejecución de programas Haskell desde el IDE. Más características, como navegación de código fuente y módulos, se agregarán en el futuro.
   
 
;[http://www.dtek.chalmers.se/~d99josve/hide/ hIDE]
 
;[http://www.dtek.chalmers.se/~d99josve/hide/ hIDE]
Line 56: Line 56:
   
 
;[http://haskell.org/hide hIDE-2]
 
;[http://haskell.org/hide hIDE-2]
:Through the dark ages many a programmer has longed for the ultimate tool. In response to this most unnerving craving, of which we ourselves have had maybe more than our fair share, the dynamic trio of #Haskellaniacs (dons, dcoutts and Lemmih) hereby announce, to the relief of the community, that a fetus has been conceived: ''hIDE - the Haskell Integrated Development Environment''. So far the unborn integrates source code recognition and a chameleon editor, resenting these in a snappy gtk2 environment. Although no seer has yet predicted the date of birth of our hIDEous creature, we hope that the mere knowledge of its existence will spread peace of mind throughout the community as oil on troubled waters. See also: [[Screenshots of HIDE]] and [[HIDE]]
+
:A través de la edad oscura muchos programadores soñaron con la herramienta máxima. En respuesta a este deseo inquietante, el cual nosotros tal vez hayamos tenido de sobra, el trío dinámico de #Haskellaniacs (dons, dcoutts y Lemmih) anuncian, para el alivio de la comunidad, que un feto ha sido concebido: ''hIDE - the Haskell Integrated Development Environment'' (Entorno de Desarrollo Integrado de Haskell). Hasta ahora el no nacido integra reconocimiento de código fuente y un editor camaleón, resintiendo estos en un animado entorno gtk2. A pesar de que ningún vidente haya predicho la fecha de nacimiento de nuestra criatura, esperamos que el mero conocimiento de su existencia lleve paz y tranquilidad a la comunidad como el aceite en aguas turbias. Ver también: [[HIDE/Screenshots of HIDE|Capturas de HIDE]] y [[HIDE]].
   
;[http://www.students.cs.uu.nl/people/rjchaaft/JCreator JCreator with Haskell support]
+
;[http://www.students.cs.uu.nl/people/rjchaaft/JCreator JCreator with Haskell support] (JCreator con soporte Haskell)
:JCreator is a highly customizable Java IDE for Windows. Features include extensive project support, fully customizable toolbars (including the images of user tools) and menus, increase/decrease indent for a selected block of text (tab/shift+tab respectively). The Haskell support module adds syntax highlighting for haskell files and winhugs, hugs, a static checker (if you double click on the error message, JCreator will jump to the right file and line and highlight it yellow) and the Haskell 98 Report as tools. Platforms: Win95, Win98, WinNT and Win2000 (only Win95 not tested yet). Size: 6MB. JCreator is a trademark of Xinox Software; Copyright © 2000 Xinox Software The Haskell support module is made by [http://www.students.cs.uu.nl/people/rjchaaft/ Rijk-Jan van Haaften].
+
:JCreator es un IDE Java para Windows altamente personalizable. Las características incluyen soporte extensivo para proyectos, barras de herramientas totalmente personalizables (incluyendo las imágenes de herramientas definidas por el usuario) y menús, aumentar/disminuir sangrado para un bloque de texto seleccionado (tab/shift+tab respectivamente). El módulo de soporte Haskell agrega coloreo de sintaxis para código Haskell y winhugs, hugs, un verificador estático (si haces doble clic en el mensaje de error, JCreator saltará a la línea correcta del archivo correcto y lo marcará en amarillo) y el informe Haskell 98 como herramientas. Plataformas: Win95, Win98, WinNT y Win2000 (sólo Win95 no se ha probado todavía). Tamaño: 6 MB. JCreator es una marca registrada de Xinox Software; Copyright © 2000 Xinox Software. El módulo de soporte Haskell es desarrollado por [http://www.students.cs.uu.nl/people/rjchaaft/ Rijk-Jan van Haaften].
   
 
;[http://www.haskell.org/visualhaskell Visual Haskell]
 
;[http://www.haskell.org/visualhaskell Visual Haskell]
:Visual Haskell is a complete development environment for Haskell software, based on Microsoft's [http://msdn.microsoft.com/vstudio/productinfo/ Microsoft Visual Studio] platform. Visual Haskell integrates with the Visual Studio editor to provide interactive features to aid Haskell development, and it enables the construction of projects consisting of multiple Haskell modules, using the Cabal building/packaging infrastructure.
+
:Visual Haskell es un entorno de desarrollo completo para software Haskell, basado en la plataforma [http://msdn.microsoft.com/vstudio/productinfo/ Microsoft Visual Studio]. Visual Haskell se integra con el editor de Visual Studio para ofrecer características interactivas que ayudan al desarrollo en Haskell, y permite la construcción de proyectos que consisten en múltiples módulos Haskell, usando la infraestructura de empaquetamiento/compilación Cabal.
   
 
;[http://www.kdevelop.org/ KDevelop]
 
;[http://www.kdevelop.org/ KDevelop]
:This IDE supports many languages. For Haskell it [http://www.kdevelop.org/HEAD/doc/api/html/LangSupportStatus.html currently supports] project management, syntax highlighting, building (with GHC) & executing within the IDE.
+
:Este IDE soporta muchos lenguajes. Para Haskell [http://www.kdevelop.org/HEAD/doc/api/html/LangSupportStatus.html actualmente soporta] administración de proyectos, coloreo de sintaxis, compilación (con GHC) y ejecución dentro del IDE.
   
;[http://haste.dyndns.org:8080/ haste - Haskell TurboEdit]
+
;[[haste]] - Haskell TurboEdit
:haste - Haskell TurboEdit - is an IDE for the functional programming language Haskell, written in Haskell.
+
:haste - Haskell TurboEdit - es un IDE para el lenguaje de programación funcional Haskell, escrito en Haskell.
   
 
;[http://www.cs.kent.ac.uk/projects/vital/ Vital]
 
;[http://www.cs.kent.ac.uk/projects/vital/ Vital]
:Vital is a visual programming environment. It is particularly intended for supporting the open-ended, incremental style of development often preferred by end users (engineers, scientists, analysts, etc.).
+
:Vital es un entorno de programción visual. Está particularmente pensado para soportar el estilo abierto, incremental de desarrollo usualmente preferido por usuarios finales (ingenieros, científicos, analistas, etc.).
   
 
;[http://www.cs.kent.ac.uk/projects/pivotal/ Pivotal]
 
;[http://www.cs.kent.ac.uk/projects/pivotal/ Pivotal]
:Pivotal 0.025 is an early prototype of a Vital-like environment for Haskell. Unlike Vital, however, Pivotal is implemented entirely in Haskell. The implementation is based on the use of the hs-plugins library to allow dynamic compilation and evaluation of Haskell expressions together with the gtk2hs library for implementing the GUI.
+
:Pivotal 0.025 es un prototipo de un entorno al estilo de Vital para Haskell. A diferencia de Vital, Pivotal está implementado enteramente en Haskell. La implementación está basada en el uso de la librería hs-plugins para permitir la compilación y evaluación dinámica de expresiones de Haskell junto con la librería gtk2hs para implementar la interfase gráfica.
   
=== Editor modes for syntax highlighting ===
+
=== Modos de editor para coloreo de sintaxis ===
   
 
====Kate====
 
====Kate====
   
  +
; Coloreo de sintaxis para Kate (KDE)
; Syntax highlighting files for KDE's Kate
 
 
:
 
:
* [http://www.informatik.uni-bonn.de/~ralf/software.html#syntax Files] by Ralf Hinze.
+
* [http://www.informatik.uni-bonn.de/~ralf/software.html#syntax Archivos] por Ralf Hinze.
* [hs.xml hs.xml] and [lhs.xml lhs.xml] by Brian Huffman.
+
* [hs.xml hs.xml] y [lhs.xml lhs.xml] por Brian Huffman.
   
 
====NEdit====
 
====NEdit====
   
;[http://www.nedit.org/ftp/contrib/highlighting/haskell.pats NEdit] syntax highlighting and block comment support.
+
;[http://www.nedit.org/ftp/contrib/highlighting/haskell.pats Soporte] para coloreo de sintaxis y comentarios de bloque en NEdit.
   
 
====Vim====
 
====Vim====
   
;[http://www.vim.org vim] syntax highlighting
+
;Coloreo de sintaxis en [http://www.vim.org vim]
 
:
 
:
* [ftp://ftp.cse.unsw.edu.au/pub/users/dons/vim/ by Don Stewart]: for TeX and cpp style Haskell files.
+
* [ftp://ftp.cse.unsw.edu.au/pub/users/dons/vim/ por Don Stewart]: para archivos Haskell estilo TeX y cpp.
* [http://urchin.earth.li/~ian/vim/ by Ian Lynagh]: distinguishes different literal Haskell styles.
+
* [http://urchin.earth.li/~ian/vim/ por Ian Lynagh]: distingue distintos estilos de Haskell literal.
* by John Williams: Both regular Haskell [haskell.vim .hs] and [lhaskell.vim .lhs] files that uncomment lines using '>' are supported.
+
* por John Williams: Soporta tanto Haskell normal ([haskell.vim .hs]) como [lhaskell.vim .lhs] (archivos que descomentan código prefijado por >).
* by Marc Weber: some aids for [http://mawercer.de/marcweber/vim/vim_and_haskell.html editing haskell files in vim]
+
* por Marc Weber: una ayuda para [http://mawercer.de/marcweber/vim/vim_and_haskell.html editar archivos Haskell en vim].
   
 
====Textpad====
 
====Textpad====
   
;[http://www.haskell.org/libraries/Haskell98.syn Syntax highlighting file] for [http://www.textpad.com textpad]
+
;[http://www.haskell.org/libraries/Haskell98.syn Archivo de coloreo de sintaxis] para [http://www.textpad.com textpad]
:by Jeroen van Wolffelaar and Arjan van IJzerdoorn, which inludes all prelude functions, datatype, constructors, etc, all in seperate groups.
+
:por Jeroen van Wolffelaar y Arjan van IJzerdoorn, que incluye todas las funciones del preludio, tipos de datos, constructores, etc. en grupos separados.
   
 
====Emacs====
 
====Emacs====
   
;[http://www.haskell.org/haskell-mode/ Haskell Mode for Emacs]
+
;[http://www.haskell.org/haskell-mode/ Modo Haskell para Emacs]
:Supports font locking, declaration scanning, documentation of types, indentation and interaction with Hugs. (If using on XEmacs, you may need a minor patch - see [[User:BrettGiles]]).
+
:Soporta font locking, recolección de declaraciones, documentación de tipos, indentación e interacción con Hugs. (Si usas XEmacs, puedes necesitar un parche menor - ver [[Haskell mode for Emacs#Xemacs]]).
   
;Alternative [http://www.haskell.org/libraries/hugs-mode.el Hugs Mode for Emacs] by Chris Van Humbeeck
+
;[http://www.haskell.org/libraries/hugs-mode.el Modo Hugs para Emacs] alternativo por Chris Van Humbeeck
:Provides fontification and cooperation with Hugs. Updated for emacs 20.* by Adam P. Jenkins.
+
:Ofrece fontificación y cooperación con Hugs. Actualizado para emacs 20.* por Adam P. Jenkins.
   
 
;[http://daniel.franke.name/latex-lhs-mode.el latex-lhs-mode.el]
 
;[http://daniel.franke.name/latex-lhs-mode.el latex-lhs-mode.el]
:Built on top of haskell-mode (above), it provides simultaneous use of all of literate-haskell-mode and most of emacs' built-in latex-mode.
+
:Escrito sobre haskell-mode (arriba), permite el uso simultáneo de literate-haskell-mode y la mayor parte de latex-mode incluido en emacs.
  +
 
 
====Jed====
 
====Jed====
   
;[http://www.astercity.net/~khaliff/haskell/haskellmode.tgz Haskell mode] {{dead link}}
+
;[http://www.astercity.net/~khaliff/haskell/haskellmode.tgz Modo Haskell] {{dead link}}
:for [http://www.jedsoft.org/jed/ jed] by Marcin 'Qrczak' Kowalczyk.
+
:para [http://www.jedsoft.org/jed/ jed] por Marcin 'Qrczak' Kowalczyk.
   
 
====Subethaedit====
 
====Subethaedit====
   
;[http://www.codingmonkeys.de/subethaedit/modes.html Haskell mode For SubEthaEdit]
+
;[http://www.codingmonkeys.de/subethaedit/modes.html Modo Haskell para SubEthaEdit]
: SubEthaEdit is a Mac OS X editor.
+
: SubEthaEdit es un editor para Mac OS X.
   
====Other====
+
====Otros====
   
Some other, mostly obsolete, modes are available in [http://cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/CONTRIB/haskell-modes/ CVS].
+
Algunos otros modos, en su mayoría obsoletos, están disponibles en el [http://cvs.haskell.org/cgi-bin/cvsweb.cgi/fptools/CONTRIB/haskell-modes/ CVS].
   
 
=== Typesetting Haskell ===
 
=== Typesetting Haskell ===
   
 
;[http://www.jantar.org/lambdaTeX/ lambdaTeX]
 
;[http://www.jantar.org/lambdaTeX/ lambdaTeX]
:A TeX package for typesetting literate scripts in TeX. The output looks much like the code from Chris Okasaki's book "Purely Functional Data Structures", doing syntax highlighting and converting ASCII art such as <code>-&gt;</code> or <code>alpha</code> to proper mathematical symbols. It should work with both LaTeX and plain TeX, and it does its magic without any annotations, directly on the source code (lambdaTeX uses an almost-complete Haskell lexical analyzer written entirely in plain TeX). You only have to add <code>\input lambdaTeX</code> at the top of your source file, and manually typeset your literate comments so they look as good as the source code.
+
:Un paquete TeX para fotocomponer literate scripts. La salida se ve como el código del libro de Chris Okasaki "Purely Functional Data Structures", con coloreo de sintaxis y convirtiendo arte ASCII como <code>-&gt;</code> o <code>alpha</code> a los símbolos matemáticos apropiados. Debería functionar tanto con LaTeX como TeX, y trabaja sin necesidad de ninguna anotación, directamente sobre el código (lambdaTeX usa un analizador léxico de Haskell casi completo escrito en TeX). Sólo tiene que agregar <code>\input lambdaTeX</code> al principio de tu archivo fuente, y escribir los comentarios manualmente de modo que se vean tan bien como el código.
   
;[http://www.cse.unsw.edu.au/~chak/haskell/haskell-style.html Haskell Style for LaTeX2e]
+
;[http://www.cse.unsw.edu.au/~chak/haskell/haskell-style.html Estilo Haskell para LaTeX2e]
:by Manuel Chakravarty provides environments and macros that simplify setting Haskell programs in LaTeX.
+
:por Manuel Chakravarty, ofrece entornos y macros que simplifican la composición de programas Haskell en LaTeX.
   
 
;[http://www.iai.uni-bonn.de/~loeh/lhs2tex/ lhs2tex]
 
;[http://www.iai.uni-bonn.de/~loeh/lhs2tex/ lhs2tex]
:A preprocessor for typesetting Haskell programs that combines some of the good features of pphs and smugweb. It generates LaTeX code from literate Haskell sources.
+
:Un preprocesador para fotocomponer programas Haskell que combina algunas de las buenas características de pphs y smugweb. Genera código LaTeX a partir de fuentes Haskell.
   
 
;[http://www.cs.uu.nl/wiki/Ehc/Shuffle Shuffle]
 
;[http://www.cs.uu.nl/wiki/Ehc/Shuffle Shuffle]
:another tool helping literate programming in Haskell. It helps to maintain ''views'' in a literate programming project. For example, it is among the tools used for developing a compiler in an iterative way with manuals didactically reflecting these evolving series of versions deriving from the literal code (see [http://www.cs.uu.nl/wiki/Ehc/WebHome Essential Haskell Compiler] project). Thus, Shuffle gives us the possibility for making didactically the evolution of versions visible in the documentation, when this is needed. More generally, Shuffle gives us tangling and weaving possibilities of literate programming. I think it gives a way to think of literal program development in a more abstract way by supporting the concept of views (maybe a too far analogy: version control management -- e.g. [http://abridgegame.org/darcs/ darcs] -- helps thinking of program development in a more abstract way, too). Shuffle works well together with lhs2tex.
+
:otra herramienta para ayudar en la programación literate en Haskell. Ayuda a mantener ''vistas'' in un proyecto de programación literate. Por ejemplo, está entre las herramientas usadas para desarrollar un compilador de manera iterativa, en el que los manuales didácticamente reflejan esta serie de versiones cada vez más evolucionadas que derivan del código literal (ver el proyecto [http://www.cs.uu.nl/wiki/Ehc/WebHome Essential Haskell Compiler] (Compilador Esencial de Haskell)). Así Shuffle ofrece la posibilidad de hacer visible en la documentación la evolución de las versiones de forma didáctica, cuando esto es necesario. Más generalmente, Shuffle presenta las posibilidades de tangling y weaving de la programación literate. Pienso que permite pensar en el desarrollo de programas literales de una manera más abstracta, soportando el concepto de vistas (tal vez esta sea una analogía muy exagerada: el manejo de control de versiones -- e.g. [http://abridgegame.org/darcs/ darcs] -- ayuda a pensar en el desarrollo de una manera más abstracta, también). Shuffle funciona bien con lhs2tex.
   
 
;[http://www.acooke.org/jara/pancito/haskell.sty haskell.sty]
 
;[http://www.acooke.org/jara/pancito/haskell.sty haskell.sty]
:A Latex style file by Andrew Cooke that makes literal programming in Haskell simple.
+
:Un estilo LaTeX por Andrew Cooke que hace sencilla la programación literal en Haskell.
   
 
;[http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/Haskell2LaTeX/ Haskell2Latex]
 
;[http://web.comlab.ox.ac.uk/oucl/work/ian.lynagh/Haskell2LaTeX/ Haskell2Latex]
:Ian Lynagh's Haskell2LaTeX takes a literate Haskell program, or any LaTeX document with embedded Haskell, and pretty-prints the Haskell sections within it. The most significant difference between Haskell2LaTeX and other programs with similar goals is is that Haskell2LaTeX parses the input rather than merely lexing it.
+
:Haskell2LaTeX (por Ian Lynagh) toma un programa Haskell literal, o cualquier documento LaTex con Haskell embebido, e imprime (pretty-prints) las secciones Haskell dentro del mismo. La diferencia más significativa entre Haskell2LaTeX y otros programas con metas similares es que Haskell2LaTeX analiza sintácticamente la entrada en lugar de sólo analizarla léxicamente.
   
 
;[ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/hscolour-1.1.tar.gz HsColour]
 
;[ftp://ftp.cs.york.ac.uk/pub/haskell/contrib/hscolour-1.1.tar.gz HsColour]
:Colourise Haskell source code in HTML or ANSI terminal screen codes.
+
:Colorizar código Haskell en HTML o códigos de pantalla terminal ANSI.
   
  +
=== Documentación y navegación de código ===
=== Source documentation and browsing ===
 
   
;[[Haddock]] A Haskell Documentation Tool
+
;[[Haddock]] Una herramienta de documentación de Haskell
  +
:Una herramienta para generar documentación automáticamente a partir de código fuente Haskell anotado. Está pensado para documentar librerías, pero debería ser útil para cualquier tipo de código Haskell. Haddock te permite escribir anotaciones de documentación al lado de las definiciones de funciones y tipos en el código, con una sintaxis que es fácil de identificar mientras se escribe el código (no hay marcado pesado). La documentación generada por Haddock está completamente enlazada por hipervínculos - si haces clic en un nombre de un tipo en una signatura de tipo, irás directamente a la definición, y documentación, para dicho tipo.
:A tool for automatically generating documentation from annotated Haskell source code. It is primarily intended for documenting libraries, but it should be useful for any kind of Haskell code. Haddock lets you write documentation annotations next to the definitions of functions and types in the source code, in a syntax that is easy on the eye when writing the source code (no heavyweight mark-up). The documentation generated by Haddock is fully hyperlinked - click on a type name in a type signature to go straight to the definition, and documentation, for that type.
 
   
 
;[http://www.cse.unsw.edu.au/~chak/haskell/idoc/ IDoc] A No Frills Haskell Interface Documentation System
 
;[http://www.cse.unsw.edu.au/~chak/haskell/idoc/ IDoc] A No Frills Haskell Interface Documentation System
  +
:IDoc extrae documentación de interfase y declaraciones de módulos Haskell basadas en las reglas de disposición estándar de Haskell y un pequeño número de pistas que el programador debe embeber en los comentarios de interfase. Estas pistas han sido diseñadas para ser visualmente ligeras al mostrar código en un editor de texto. La documentación de interfase se muestra en lenguajes de marcado estándar (actualmente, sólo HTML es soportado). IDoc fue diseñado para ser simple de usar e instalar.
:IDoc extracts interface documentation and declarations from Haskell modules based on standard Haskell layout rules and a small number of clues that the programmer embeds in interface comments. These clues have been designed to be visually non-imposing when displaying the source in a text editor. Interface documentation is rendered in standard markup languages (currently, only HTML is supported). IDoc has been designed to be simple to use and install.
 
   
 
;[http://www.fmi.uni-passau.de/~groessli/hdoc/ HDoc]
 
;[http://www.fmi.uni-passau.de/~groessli/hdoc/ HDoc]
  +
:HDoc genera documentación en formato HTML para módulos Haskell. Los documentos generados estan entrelazados e incluyen resúmenes y descripciones detalladas para las funciones, tipos de datos, clases de tipos y declaraciones de instancias documentadas.
:HDoc generates documentation in HTML format for Haskell modules. The generated documents are cross linked and include summaries and detailed descriptions for the documented functions, data types, type classes and instance declarations.
 
   
 
;[http://www.ida.liu.se/~jakax/haskell.html HaskellDoc]
 
;[http://www.ida.liu.se/~jakax/haskell.html HaskellDoc]
  +
:Este programa genera un documento HTML mostrando las interfases de módulo de un proyecto Haskell. Incluye enlaces convenientes para la fácil navegación de los diferentes módulos en un proyecto, y para acceso rápido al código.
:This program generates an HTML document showing the module interfaces of a Haskell project. Convenient links are placed for easy browsing of the different modules of the project, and for quick access to the source code.
 
   
 
;[http://home.conceptsfa.nl/~jwit/HaSpell.html HaSpell]
 
;[http://home.conceptsfa.nl/~jwit/HaSpell.html HaSpell]
:HaSpell is a spelling and style checker for Haskell programs. It can detect spelling errors in comments in the program text, and optionally in the code itself. There is an option to detect metasyntactic variables (such as 'foo') and 'bad function prefixes' such as 'compute' and 'doThe' - these make the program less readable and generally indicate bad programming style.
+
:HaSpell es un comprobador de ortografía y estilo para programas Haskell. Puede detectar errores de tipeo en comentarios o en el texto del programa, y opcionalmente en el código en sí. Hay una opción para detectar variables metasintácticas (como 'foo') y 'malos prefijos a nombres de función' como 'compute' y 'doThe' - estos hacen que el programa sea menos legible y generalmente indican un estilo de programación pobre.
   
=== Testing ===
+
=== Verificación ===
   
 
;[http://hunit.sourceforge.net HUnit]
 
;[http://hunit.sourceforge.net HUnit]
:A unit testing framework for Haskell, similar to JUnit for Java. With HUnit, the programmer can easily create tests, name them, group them into suites, and execute them, with the framework checking the results automatically. Test specification is concise, flexible, and convenient.
+
:Un marco de verificación unitaria para Haskell, similar a JUnit para Java. Con HUnit, el programador puede fácilmente crear pruebas, nombrarlas, agruparalas en suites, y ejecutarlas. HUnit verificará los resultados automáticamente. La especificación de las pruebas es concisa, flexible y conveniente.
   
 
;[http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck]
 
;[http://www.cs.chalmers.se/~rjmh/QuickCheck/ QuickCheck]
  +
:Una herramienta para verificar programas Haskell automáticamente. El programador provee una especificación del programa, en la forma de propiedades que las funciones deben satisfaces, y QuickCheck después prueba que las propiedades valen para un gran número de casos generados aleatoriamente. Las especificaciones se expresan en Haskell, usando combinadores definidos en la librería QuickCheck. Esta librería ofrece combinadores para definir propiedades, observar la distribución de los datos de prueba, y definir generadores de datos de prueba.
:A tool for testing Haskell programs automatically. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases. Specifications are expressed in Haskell, using combinators defined in the QuickCheck library. QuickCheck provides combinators to define properties, observe the distribution of test data, and define test data generators.
 
   
 
;[http://www.informatik.uni-freiburg.de/~wehr/haskell/ HTF - The Haskell Test Framework]
 
;[http://www.informatik.uni-freiburg.de/~wehr/haskell/ HTF - The Haskell Test Framework]
  +
:El HTF permite escribir pruebas para HUnit y propiedades para QuickCheck de forma fácil y conveniente. Adicionalmente, el HTG provee una función para verificar programas ejecutándolos y comparando sus resultados con la salida esperada (las llamadas "pruebas basadas en archivos"). El HTF usa Template Haskell para recolectar todas las propiedades y pruebas, así que no necesita escribir código de infraestructura para eso. Mediante macros de preprocesador, se ofrece información de nombre de archivo y número de línea para las pruebas y propiedades que fallaron.
:The HTF lets you write HUnit tests and QuickCheck properties in an easy and convenient way. Additionally, the HTF provides a facility for testing programs by running them and comparing the actual output with the expected output (so called "file-based tests"). The HTF uses Template Haskell to collect all tests and properties, so you do not need to write boilerplate code for that purpose. Preprocessor macros provide you with file name and line number information for tests and properties that failed.
 
   
 
;[http://www.galois.com/~andy/hpc-intro.html Hpc: Haskell Program Coverage]
 
;[http://www.galois.com/~andy/hpc-intro.html Hpc: Haskell Program Coverage]
Line 183: Line 183:
   
 
;[[Haskell Equational Reasoning Assistant]]
 
;[[Haskell Equational Reasoning Assistant]]
:Functional programmers often appeal to equational reasoning to justify various decisions made in both design and implementation. This page introduces the Haskell Equational Reasoning Assistant (HERA), an architecture that provides both a GUI level and a batch level Haskell rewrite engine inside a single tool.
+
:Los programadores funcionales a veces recurren al razonamiento ecuacional para justificar varias decisiones tomadas en tanto el diseño como la implementación. Esta página introduce el Haskell Equational Reasoning Assistant (HERA), o Asistente de Razonamiento Ecuacional para Haskell, una arquitectura que provee un motor de reescritura Haskell al nivel gráfico y por lotes, dentro de una misma herramienta.
   
=== Tracing &amp; debugging ===
+
=== Trazado y depuración ===
   
  +
El trazado proprciona acceso a información sobre un cómputo que normalmente sería invisible. Los depuradores convencionales permiten al usuario avanzar paso a paso la evolución de un cómputo, detenerse en puntos dados y examinar el contenido de las variables. Este método de trazado no es adecuado para Haskell, porque su orden de evaluación es complejo, los argumentos a funciones son usualmente expresiones sin evaluar inmanejablemente grandes, y generalmente los detalles de la computación no concuerdan con la visión de alto nivel del usuario de las funciones como asociación entre valores.
Tracing gives access to otherwise invisible information about a computation. Conventional debuggers allow the user to step through the program computation, stop at given points and examine variable contents. This tracing method is quite unsuitable for Haskell, because its evaluation order is complex, function arguments are usually unwieldy large unevaluated expressions and generally
 
computation details do not match the user's high-level view of functions mapping values to values.
 
   
 
;[http://www.cs.mu.oz.au/~bjpop/buddha/ Buddha]
 
;[http://www.cs.mu.oz.au/~bjpop/buddha/ Buddha]
  +
:Buddha es un depurador declarativo para programas Haskell 98. Presenta la evaluación de un programa Haskell como una serie de aplicaciones a funciones. Una sesión de depuración típica involucra una serie de preguntas y respuestas. Las preguntas son propuestas por el depurador, y las respuestas provistas por el usuario. La implementación de Buddha está basada en la transformación de programas.
:Buddha is a declarative debugger for Haskell 98 programs. It presents the evaluation of a Haskell program as a series of function applications. A typical debugging session involves a series of questions and answers. The questions are posed by the debugger, and the answers are provided by the user. The implementation of Buddha is based on program transformation.
 
 
 
 
;[http://www.ida.liu.se/~henni Freja]
 
;[http://www.ida.liu.se/~henni Freja]
  +
:Un compilador para un subconjunto de Haskell. La ejecución de un programa compilado crea un árbol de dependencias de evaluación como traza, una estructura basada en la idea de la depuración declarativa, que viene de la comunidad de programación lógica. Una sesión de depuración consiste en una secuencia de preguntas respondidas por el usuario.
:A compiler for a subset of Haskell. Running a compiled program creates an evaluation dependency tree as trace, a structure based on the idea of declarative debugging from the logic programming community. A debugging session consists of the user answering a sequence of yes/no questions.
 
   
 
;[http://www.cs.york.ac.uk/fp/hat Hat]
 
;[http://www.cs.york.ac.uk/fp/hat Hat]
:A Haskell program is first transformed by hat-trans and then compiled with nhc98 or ghc. At runtime the program writes a trace file. There are tools for viewing the trace in various ways: Hat-stack shows a virtual stack of redexes. Hat-observe shows top-level functions in the style of Hood. Hat-trail enables exploring a computation backwards, starting from (part of) a faulty output or an error message. Hat-detect provides algorithmic debugging in the style of Freja. Hat-explore allows free navigation through a computation similar to traditional debuggers and algorithmic debugging and slicing.
+
:Un programa Haskell primero es transformado por hat-trans y luego compilado con nhc98 o ghc. En tiempo de ejecución, el programa escribe un archivo de traza. Hay herramientas para ver la traza de varias maneras: Hat-stack muestra una pila virutal de redexes. Hat-observer muestra funciones de nivel superior al estilo de Hood. Hat-trail permite explorar un cómputo hacia atrás, empezando de (parte de) una salida errónea o un mensaje de error. Hat-detect provee depuración algorítmica al estilo de Freja. Hat-explore permite la libre navegación sobre un cómputo de forma similar a los depuradores tradicionales, y también depuración algorítmica y slicing (TODO: ¿Traducción? rebanado, trozado).
   
 
;[http://www.haskell.org/hood Hood]
 
;[http://www.haskell.org/hood Hood]
  +
:Una librería que permite observer estructuras de datos en puntos del programa dados. Básicamente, puede usarse como sentencias print en lenguajes imperativos, sólo que el orden de evaluación lazy no es afectado y también es posible observar funciones.
:A library that permits to observe data structures at given program points. It can basically be used like print statements in imperative languages, but the lazy evaluation order is not affected and functions can be observed as well.
 
   
 
;[http://www.cs.ukc.ac.uk/people/staff/cr3/toolbox/haskell/ GHood]
 
;[http://www.cs.ukc.ac.uk/people/staff/cr3/toolbox/haskell/ GHood]
:"Graphical Hood" - a Java-based graphical observation event viewer, building on Hood.
+
:"Graphical Hood" - un visor de eventos de observación gráfico basado en Java, construido sobre Hood.
   
 
;[http://www.cs.mu.oz.au/~bjpop/code.html highWaterMark]
 
;[http://www.cs.mu.oz.au/~bjpop/code.html highWaterMark]
  +
:Una librería para determinar la cantidad de memoria alojada en un punto cualquiera de un programa GHC.
:A library for determining the amount of memory allocated at any point by a GHC program.
 
   
 
;[http://www.cs.mu.oz.au/~bjpop/code.html GHC Internals library]
 
;[http://www.cs.mu.oz.au/~bjpop/code.html GHC Internals library]
:A GHC library for polymorphically deconstructing heap objects from within Haskell code.
+
:Una librería de GHC para deconstruir polimórficamente objetos en el heap desde el código Haskell.
   
 
;[http://www.cs.mu.oz.au/~bjpop/code.html GHC Heap and Stable Table Printing library]
 
;[http://www.cs.mu.oz.au/~bjpop/code.html GHC Heap and Stable Table Printing library]
:Two libraries for GHC. The first is for printing heap objects from within Haskell or C code. The second is for dumping the contents of the Stable Table which is used for Stable Pointers and Stable Names.
+
:Dos librerías para GHC. La primera es para imprimir objetos del heap desde código Haskell o C. La segunda es para volcar el contenido de la Tabla Estable usada por Punteros Estables y Nombres Estables.
   
=== Bug tracking ===
+
=== Rastreo de bugs ===
   
 
;[http://urchin.earth.li/darcs/ian/bts/ Bark]
 
;[http://urchin.earth.li/darcs/ian/bts/ Bark]
:Bark is a bug tracking system written in Haskell
+
:Bark es un sistema de rastreo de bugs escrito en Haskell.
   
=== Miscellaneous ===
+
=== Miscelánea ===
   
 
;[http://www.haskell.org/hoogle/ Hoogle]
 
;[http://www.haskell.org/hoogle/ Hoogle]
  +
:Hoogle es un motor de búsqueda para el API de Haskell. Permite buscar una función en las librerías estándar por nombre, o signatura de tipo aproximada.
:Hoogle is a Haskell API search engine. It allows you to search for a function in the standard libraries by either name, or by approximate type signature.
 
   
 
;[[Lambdabot]]
 
;[[Lambdabot]]
:Once an IRC bot, this has grown to be a large, ad-hoc collection of Haskell development tools available for offline use. In particular, automatic point-free refactoring is available via a vim interface, as well as access to [[Hoogle]], djinn, ghci, and much much more.
+
:Alguna vez un bot IRC, ha crecido hasta ser una gran colleción de herramientas de desarrollo Haskell ad-hoc, disponibles para uso offline. En particular, soporta refactoring point-free (TODO: ¿traducción?) automático por medio de una interfase vim, así como acceso a [[Hoogle]], djinn, ghci y mucho más.
   
 
;[http://www.cse.unsw.edu.au/~dons/darcs-graph.html darcs-graph]
 
;[http://www.cse.unsw.edu.au/~dons/darcs-graph.html darcs-graph]
  +
:Una herramienta para generar gráficos de actividad (para contribuciones) en repositorios darcs.
:a tool for generating graphs of commit activity for darcs repositories.
 
   
 
;[http://www.cse.unsw.edu.au/~chak/haskell/VersionTool/ VersionTool]
 
;[http://www.cse.unsw.edu.au/~chak/haskell/VersionTool/ VersionTool]
  +
:Una pequeña utilidad que:
:a small utility that:
 
  +
* extrae información de versiones de archivos Cabal,
* extracts version information from Cabal files,
 
* maintains version tags in darcs,
+
* mantiene etiquetas de versiones en darcs,
* computes patch levels by querying darcs,
+
* calcula niveles de parche consultando a darcs,
* extracts the current context from darcs, and
+
* extrae el contexto actual de darcs, y
  +
* agrega toda esta información a un archivo fuente.
* adds all this information to a source file
 
   
 
;[http://www.haskell.org/pipermail/haskell/2006-June/018043.html Kamiariduki]
 
;[http://www.haskell.org/pipermail/haskell/2006-June/018043.html Kamiariduki]
:a system to judge your derivative work's purpose and license is valid with Creative Commons License Works.
+
:Un sistema para juzgar si el propósito y licencia de tu trabajo derivado es válido con Creative Commons License Works.
   
=== Formal methods ===
+
=== Métodos formales ===
   
;[http://aprove.informatik.rwth-aachen.de Haskell98 termination analyzer]
+
;[http://aprove.informatik.rwth-aachen.de Analizador de terminación Haskell98]
  +
:Comprueba terminación de términos iniciales dados con respecto a un programa Haskell.
:Checks termination of given start terms w.r.t. a Haskell program
 
   
  +
ver
See
 
 
* [[Analysis and design|analysis and design methods]]
 
* [[Analysis and design|analysis and design methods]]
 
* [[Libraries and tools/Theorem provers|theorem provers]].
 
* [[Libraries and tools/Theorem provers|theorem provers]].
   
=== Dead ===
+
=== Proyectos no mantenidos ===
  +
 
;[http://web.archive.org/web/*/http://www.numeric-quest.com/haskell/explorer/browser.html The Haskell Module Browser]<em>(desde 10/06/2003 en el Internet Archive)</em>
  +
:Un navegador similar a los navegadores de clases de Smalltalk y Eiffel.
   
  +
{{traduccion|titulo=Libraries and tools/Program development}}
;[http://web.archive.org/web/*/http://www.numeric-quest.com/haskell/explorer/browser.html The Haskell Module Browser]<em>(since 10/06/2003 via Internet Archive)</em>
 
:A browser similar to Smaltalk and Eiffel class browsers.
 

Latest revision as of 02:27, 26 March 2008

The copyright status of this work is not known. Please help resolve this on the talk page.

Herramientas de desarrollo

Una lista de herramientas que son útiles al escribir código Haskell. Ver también las herramientas de compilador y los demostradores automáticos.

Preprocesadores

cpphs
Cpphs es una reimplementación (en Haskell) del preprocesador de C.
DrIFT
DrIFT es una herramienta que permite la derivación de instancias de clases que no están soportadas por los compiladores estándar. Además, las instancias pueden ser producidas en módulos distintos de los que contienen la declaración del tipo. Esto permite deriver instancias para un tipo después de haber compilado el módulo orginal. Adicionalmente, es posible producir funciones utilitarias simples a partir de un tipo.
Strafunski
Strafunski es un paquete de Haskell que provee soporte para programación genérica en Haskell, basado en el concepto de estrategia funcional. Consiste en una librería de combinadores (StrategyLib) y un precompilador (DrIFT-Strafunski).
Zeroth
Un programa que use Template Haskell debe enlazar con la librería TH incluso si no contiene referencias a la misma luego de ser compilado. Zeroth es un preprocesador que permite a los módulos usar TH sin enlazar con la librería TH. Para lograr esto, Zeroth evalúa los splices (TODO: ¿traducción?) de nivel superior de un módulo y guarda el código resultante.

Sistemas de compilación

Cabal
Cabal (Common Architecture for Building Applications and Libraries) es una API distribuida con GHC, NHC98 y Hugs que permite a un desarrollador agrupar fácilmente un conjunto de módulos para producir un paquete. Es el sistema de compilación estándar para las aplicaciones y librerías de Haskell nuevas.
hmake, un reemplazo de make con soporte para Haskell
Automáticamente rastrea dependencias de módulos (no hay necesidad de escribir Makefiles). Se puede usar con cualquiera de los compiladores de Haskell usuales (ghc, hbc, nhc98).

Tags

HaskTags
Hasktags es un programa simple que genera archivos TAGS para código Haskell. Junto con un editor que los soporte (por ejemplo NEdit, XEmacs o Vim), los archivos TAGS permiten encontrar rápidamente el lugar donde las funciones, constructores de datos, etc. están definidos.
tagsh
Una versión del programa tags para Haskell. Usa las librerías hssource estandarizada y posix, y funciona con GHC 5.02.1. Se ha probado que funciona para vim y nedit.

Transformación de programas

HaRe -- The Haskell Refactorer
Refactoring mecánico de código Haskell (sobrepasa fronteras de módulos). HaRe ahora soporta muchos refactorings, como renombrado de identificadores, movimiento/introducción/inlining de definiciones, etc. Estos refactorings no están limitados a sólo un módulo. HaRe se puede acceder desde tanto Vim como Emacs.
Haskell All-In-One
Esta utilidad de Haskell toma un programa implementado en múltiples módulos y lo convierte en uno solo.
DrHylo
Herramienta para derivar hilomorfismos a partir de una sintaxis Haskell restringida. Está basado en el algoritmo presentado en el artículo "Deriving Structural Hylomorphisms from Recursive Definitions" en ICFP'96 por Hu, Iwasaki y Takeichi.

Entornos de Desarrollo Integrados

Haskell support for Eclipse (Soporte Haskell para Eclipse)
Eclipse es una plataforma IDE abierta, extensible, para "todo y nada en particular". Está implementado en Java y funciona en varias plataformas. El IDE Java construido sobre él ya se ha hecho muy popular entre los desarrolladores Java. Las herramientas de Haskell lo extienden con soporte para edición (coloreo de sintaxis, asistencia de código), compilación y ejecución de programas Haskell desde el IDE. Más características, como navegación de código fuente y módulos, se agregarán en el futuro.
hIDE
hIDE es un IDE para Haskell con interfaz gráfica, escrito con gtk+hs. No incluye un editor, sino interfases con NEdit, vim o GNU emacs.
hIDE-2
A través de la edad oscura muchos programadores soñaron con la herramienta máxima. En respuesta a este deseo inquietante, el cual nosotros tal vez hayamos tenido de sobra, el trío dinámico de #Haskellaniacs (dons, dcoutts y Lemmih) anuncian, para el alivio de la comunidad, que un feto ha sido concebido: hIDE - the Haskell Integrated Development Environment (Entorno de Desarrollo Integrado de Haskell). Hasta ahora el no nacido integra reconocimiento de código fuente y un editor camaleón, resintiendo estos en un animado entorno gtk2. A pesar de que ningún vidente haya predicho la fecha de nacimiento de nuestra criatura, esperamos que el mero conocimiento de su existencia lleve paz y tranquilidad a la comunidad como el aceite en aguas turbias. Ver también: Capturas de HIDE y HIDE.
JCreator with Haskell support (JCreator con soporte Haskell)
JCreator es un IDE Java para Windows altamente personalizable. Las características incluyen soporte extensivo para proyectos, barras de herramientas totalmente personalizables (incluyendo las imágenes de herramientas definidas por el usuario) y menús, aumentar/disminuir sangrado para un bloque de texto seleccionado (tab/shift+tab respectivamente). El módulo de soporte Haskell agrega coloreo de sintaxis para código Haskell y winhugs, hugs, un verificador estático (si haces doble clic en el mensaje de error, JCreator saltará a la línea correcta del archivo correcto y lo marcará en amarillo) y el informe Haskell 98 como herramientas. Plataformas: Win95, Win98, WinNT y Win2000 (sólo Win95 no se ha probado todavía). Tamaño: 6 MB. JCreator es una marca registrada de Xinox Software; Copyright © 2000 Xinox Software. El módulo de soporte Haskell es desarrollado por Rijk-Jan van Haaften.
Visual Haskell
Visual Haskell es un entorno de desarrollo completo para software Haskell, basado en la plataforma Microsoft Visual Studio. Visual Haskell se integra con el editor de Visual Studio para ofrecer características interactivas que ayudan al desarrollo en Haskell, y permite la construcción de proyectos que consisten en múltiples módulos Haskell, usando la infraestructura de empaquetamiento/compilación Cabal.
KDevelop
Este IDE soporta muchos lenguajes. Para Haskell actualmente soporta administración de proyectos, coloreo de sintaxis, compilación (con GHC) y ejecución dentro del IDE.
haste - Haskell TurboEdit
haste - Haskell TurboEdit - es un IDE para el lenguaje de programación funcional Haskell, escrito en Haskell.
Vital
Vital es un entorno de programción visual. Está particularmente pensado para soportar el estilo abierto, incremental de desarrollo usualmente preferido por usuarios finales (ingenieros, científicos, analistas, etc.).
Pivotal
Pivotal 0.025 es un prototipo de un entorno al estilo de Vital para Haskell. A diferencia de Vital, Pivotal está implementado enteramente en Haskell. La implementación está basada en el uso de la librería hs-plugins para permitir la compilación y evaluación dinámica de expresiones de Haskell junto con la librería gtk2hs para implementar la interfase gráfica.

Modos de editor para coloreo de sintaxis

Kate

Coloreo de sintaxis para Kate (KDE)
  • Archivos por Ralf Hinze.
  • [hs.xml hs.xml] y [lhs.xml lhs.xml] por Brian Huffman.

NEdit

Soporte para coloreo de sintaxis y comentarios de bloque en NEdit.

Vim

Coloreo de sintaxis en vim
  • por Don Stewart: para archivos Haskell estilo TeX y cpp.
  • por Ian Lynagh: distingue distintos estilos de Haskell literal.
  • por John Williams: Soporta tanto Haskell normal ([haskell.vim .hs]) como [lhaskell.vim .lhs] (archivos que descomentan código prefijado por >).
  • por Marc Weber: una ayuda para editar archivos Haskell en vim.

Textpad

Archivo de coloreo de sintaxis para textpad
por Jeroen van Wolffelaar y Arjan van IJzerdoorn, que incluye todas las funciones del preludio, tipos de datos, constructores, etc. en grupos separados.

Emacs

Modo Haskell para Emacs
Soporta font locking, recolección de declaraciones, documentación de tipos, indentación e interacción con Hugs. (Si usas XEmacs, puedes necesitar un parche menor - ver Haskell mode for Emacs#Xemacs).
Modo Hugs para Emacs alternativo por Chris Van Humbeeck
Ofrece fontificación y cooperación con Hugs. Actualizado para emacs 20.* por Adam P. Jenkins.
latex-lhs-mode.el
Escrito sobre haskell-mode (arriba), permite el uso simultáneo de literate-haskell-mode y la mayor parte de latex-mode incluido en emacs.

Jed

Modo Haskell (This link is dead. Fix it or remove it.)
para jed por Marcin 'Qrczak' Kowalczyk.

Subethaedit

Modo Haskell para SubEthaEdit
SubEthaEdit es un editor para Mac OS X.

Otros

Algunos otros modos, en su mayoría obsoletos, están disponibles en el CVS.

Typesetting Haskell

lambdaTeX
Un paquete TeX para fotocomponer literate scripts. La salida se ve como el código del libro de Chris Okasaki "Purely Functional Data Structures", con coloreo de sintaxis y convirtiendo arte ASCII como -> o alpha a los símbolos matemáticos apropiados. Debería functionar tanto con LaTeX como TeX, y trabaja sin necesidad de ninguna anotación, directamente sobre el código (lambdaTeX usa un analizador léxico de Haskell casi completo escrito en TeX). Sólo tiene que agregar \input lambdaTeX al principio de tu archivo fuente, y escribir los comentarios manualmente de modo que se vean tan bien como el código.
Estilo Haskell para LaTeX2e
por Manuel Chakravarty, ofrece entornos y macros que simplifican la composición de programas Haskell en LaTeX.
lhs2tex
Un preprocesador para fotocomponer programas Haskell que combina algunas de las buenas características de pphs y smugweb. Genera código LaTeX a partir de fuentes Haskell.
Shuffle
otra herramienta para ayudar en la programación literate en Haskell. Ayuda a mantener vistas in un proyecto de programación literate. Por ejemplo, está entre las herramientas usadas para desarrollar un compilador de manera iterativa, en el que los manuales didácticamente reflejan esta serie de versiones cada vez más evolucionadas que derivan del código literal (ver el proyecto Essential Haskell Compiler (Compilador Esencial de Haskell)). Así Shuffle ofrece la posibilidad de hacer visible en la documentación la evolución de las versiones de forma didáctica, cuando esto es necesario. Más generalmente, Shuffle presenta las posibilidades de tangling y weaving de la programación literate. Pienso que permite pensar en el desarrollo de programas literales de una manera más abstracta, soportando el concepto de vistas (tal vez esta sea una analogía muy exagerada: el manejo de control de versiones -- e.g. darcs -- ayuda a pensar en el desarrollo de una manera más abstracta, también). Shuffle funciona bien con lhs2tex.
haskell.sty
Un estilo LaTeX por Andrew Cooke que hace sencilla la programación literal en Haskell.
Haskell2Latex
Haskell2LaTeX (por Ian Lynagh) toma un programa Haskell literal, o cualquier documento LaTex con Haskell embebido, e imprime (pretty-prints) las secciones Haskell dentro del mismo. La diferencia más significativa entre Haskell2LaTeX y otros programas con metas similares es que Haskell2LaTeX analiza sintácticamente la entrada en lugar de sólo analizarla léxicamente.
HsColour
Colorizar código Haskell en HTML o códigos de pantalla terminal ANSI.

Documentación y navegación de código

Haddock Una herramienta de documentación de Haskell
Una herramienta para generar documentación automáticamente a partir de código fuente Haskell anotado. Está pensado para documentar librerías, pero debería ser útil para cualquier tipo de código Haskell. Haddock te permite escribir anotaciones de documentación al lado de las definiciones de funciones y tipos en el código, con una sintaxis que es fácil de identificar mientras se escribe el código (no hay marcado pesado). La documentación generada por Haddock está completamente enlazada por hipervínculos - si haces clic en un nombre de un tipo en una signatura de tipo, irás directamente a la definición, y documentación, para dicho tipo.
IDoc A No Frills Haskell Interface Documentation System
IDoc extrae documentación de interfase y declaraciones de módulos Haskell basadas en las reglas de disposición estándar de Haskell y un pequeño número de pistas que el programador debe embeber en los comentarios de interfase. Estas pistas han sido diseñadas para ser visualmente ligeras al mostrar código en un editor de texto. La documentación de interfase se muestra en lenguajes de marcado estándar (actualmente, sólo HTML es soportado). IDoc fue diseñado para ser simple de usar e instalar.
HDoc
HDoc genera documentación en formato HTML para módulos Haskell. Los documentos generados estan entrelazados e incluyen resúmenes y descripciones detalladas para las funciones, tipos de datos, clases de tipos y declaraciones de instancias documentadas.
HaskellDoc
Este programa genera un documento HTML mostrando las interfases de módulo de un proyecto Haskell. Incluye enlaces convenientes para la fácil navegación de los diferentes módulos en un proyecto, y para acceso rápido al código.
HaSpell
HaSpell es un comprobador de ortografía y estilo para programas Haskell. Puede detectar errores de tipeo en comentarios o en el texto del programa, y opcionalmente en el código en sí. Hay una opción para detectar variables metasintácticas (como 'foo') y 'malos prefijos a nombres de función' como 'compute' y 'doThe' - estos hacen que el programa sea menos legible y generalmente indican un estilo de programación pobre.

Verificación

HUnit
Un marco de verificación unitaria para Haskell, similar a JUnit para Java. Con HUnit, el programador puede fácilmente crear pruebas, nombrarlas, agruparalas en suites, y ejecutarlas. HUnit verificará los resultados automáticamente. La especificación de las pruebas es concisa, flexible y conveniente.
QuickCheck
Una herramienta para verificar programas Haskell automáticamente. El programador provee una especificación del programa, en la forma de propiedades que las funciones deben satisfaces, y QuickCheck después prueba que las propiedades valen para un gran número de casos generados aleatoriamente. Las especificaciones se expresan en Haskell, usando combinadores definidos en la librería QuickCheck. Esta librería ofrece combinadores para definir propiedades, observar la distribución de los datos de prueba, y definir generadores de datos de prueba.
HTF - The Haskell Test Framework
El HTF permite escribir pruebas para HUnit y propiedades para QuickCheck de forma fácil y conveniente. Adicionalmente, el HTG provee una función para verificar programas ejecutándolos y comparando sus resultados con la salida esperada (las llamadas "pruebas basadas en archivos"). El HTF usa Template Haskell para recolectar todas las propiedades y pruebas, así que no necesita escribir código de infraestructura para eso. Mediante macros de preprocesador, se ofrece información de nombre de archivo y número de línea para las pruebas y propiedades que fallaron.
Hpc: Haskell Program Coverage
Hpc is a tool-kit to record and display Haskell program coverage. Hpc includes tools that instrument Haskell programs to record program coverage, run instrumented programs, and display the coverage information obtained.
Haskell Equational Reasoning Assistant
Los programadores funcionales a veces recurren al razonamiento ecuacional para justificar varias decisiones tomadas en tanto el diseño como la implementación. Esta página introduce el Haskell Equational Reasoning Assistant (HERA), o Asistente de Razonamiento Ecuacional para Haskell, una arquitectura que provee un motor de reescritura Haskell al nivel gráfico y por lotes, dentro de una misma herramienta.

Trazado y depuración

El trazado proprciona acceso a información sobre un cómputo que normalmente sería invisible. Los depuradores convencionales permiten al usuario avanzar paso a paso la evolución de un cómputo, detenerse en puntos dados y examinar el contenido de las variables. Este método de trazado no es adecuado para Haskell, porque su orden de evaluación es complejo, los argumentos a funciones son usualmente expresiones sin evaluar inmanejablemente grandes, y generalmente los detalles de la computación no concuerdan con la visión de alto nivel del usuario de las funciones como asociación entre valores.

Buddha
Buddha es un depurador declarativo para programas Haskell 98. Presenta la evaluación de un programa Haskell como una serie de aplicaciones a funciones. Una sesión de depuración típica involucra una serie de preguntas y respuestas. Las preguntas son propuestas por el depurador, y las respuestas provistas por el usuario. La implementación de Buddha está basada en la transformación de programas.
Freja
Un compilador para un subconjunto de Haskell. La ejecución de un programa compilado crea un árbol de dependencias de evaluación como traza, una estructura basada en la idea de la depuración declarativa, que viene de la comunidad de programación lógica. Una sesión de depuración consiste en una secuencia de preguntas respondidas por el usuario.
Hat
Un programa Haskell primero es transformado por hat-trans y luego compilado con nhc98 o ghc. En tiempo de ejecución, el programa escribe un archivo de traza. Hay herramientas para ver la traza de varias maneras: Hat-stack muestra una pila virutal de redexes. Hat-observer muestra funciones de nivel superior al estilo de Hood. Hat-trail permite explorar un cómputo hacia atrás, empezando de (parte de) una salida errónea o un mensaje de error. Hat-detect provee depuración algorítmica al estilo de Freja. Hat-explore permite la libre navegación sobre un cómputo de forma similar a los depuradores tradicionales, y también depuración algorítmica y slicing (TODO: ¿Traducción? rebanado, trozado).
Hood
Una librería que permite observer estructuras de datos en puntos del programa dados. Básicamente, puede usarse como sentencias print en lenguajes imperativos, sólo que el orden de evaluación lazy no es afectado y también es posible observar funciones.
GHood
"Graphical Hood" - un visor de eventos de observación gráfico basado en Java, construido sobre Hood.
highWaterMark
Una librería para determinar la cantidad de memoria alojada en un punto cualquiera de un programa GHC.
GHC Internals library
Una librería de GHC para deconstruir polimórficamente objetos en el heap desde el código Haskell.
GHC Heap and Stable Table Printing library
Dos librerías para GHC. La primera es para imprimir objetos del heap desde código Haskell o C. La segunda es para volcar el contenido de la Tabla Estable usada por Punteros Estables y Nombres Estables.

Rastreo de bugs

Bark
Bark es un sistema de rastreo de bugs escrito en Haskell.

Miscelánea

Hoogle
Hoogle es un motor de búsqueda para el API de Haskell. Permite buscar una función en las librerías estándar por nombre, o signatura de tipo aproximada.
Lambdabot
Alguna vez un bot IRC, ha crecido hasta ser una gran colleción de herramientas de desarrollo Haskell ad-hoc, disponibles para uso offline. En particular, soporta refactoring point-free (TODO: ¿traducción?) automático por medio de una interfase vim, así como acceso a Hoogle, djinn, ghci y mucho más.
darcs-graph
Una herramienta para generar gráficos de actividad (para contribuciones) en repositorios darcs.
VersionTool
Una pequeña utilidad que:
  • extrae información de versiones de archivos Cabal,
  • mantiene etiquetas de versiones en darcs,
  • calcula niveles de parche consultando a darcs,
  • extrae el contexto actual de darcs, y
  • agrega toda esta información a un archivo fuente.
Kamiariduki
Un sistema para juzgar si el propósito y licencia de tu trabajo derivado es válido con Creative Commons License Works.

Métodos formales

Analizador de terminación Haskell98
Comprueba terminación de términos iniciales dados con respecto a un programa Haskell.

ver

Proyectos no mantenidos

The Haskell Module Browser(desde 10/06/2003 en el Internet Archive)
Un navegador similar a los navegadores de clases de Smalltalk y Eiffel.

Nota: Esta es una traducción del artículo original en Inglés : Libraries and tools/Program development