La forma recomendada de distribuir sus proyectos Haskell es usar Cabal. Cabal es a la vez un sistema de compilación y un gestor de paquetes para el código Haskell, y facilita la compilación del código Haskell en diferentes plataformas mientras maneja las dependencias por usted.
He aquí un ejemplo de archivo de Cabal:
Name: MyPackage
Version: 0.0
Cabal-Version: >= 1.2
License: BSD3
Author: Angela Author
Synopsis: Small package an utility program
Build-Type: Simple
Executable myutility
Build-Depends: base
Main-Is: Main.hs
Hs-Source-Dirs: src
Se puede generar un archivo de Cabal forma interactiva mediante la ejecución de
$ cabal init
Cabal A continuación, algunas preguntas simples y generar un archivo de Cabal en función de sus respuestas . Luego puede ajustar este archivo para que se ajuste a sus necesidades específicas.
Para instalar el paquete acaba de ejecutar esto en el directorio del paquete
$ cabal install
También puede cargar el paquete a Hackage, el estándar Haskell paquete de repositorio. De esta manera, la gente puede descargar e instalar el paquete (y cualquier dependencia) en un solo paso con el comando
$ cabal install mypackage
También existen herramientas para convertir paquetes de Cabal a otros gestores de paquetes, si no desea que se requiera tus usuarios tienen instalado Cabal (aunque Cabal está incluido en el Haskell Platform).
También funciona bien con Haddock para generar documentación de referencia para su paquete. Vea algunos de los paquetes en Hackage para ver un ejemplo de los resultados.
También se está trabajando actualmente para mejorar la compatibilidad con suites de prueba en Cabal.
En general, estas razones y muchas más hacen que sea un gran beneficio utilizar Cabal para organizar, construir y distribuir sus proyectos de Haskell.
Gracias! Cabal es la solución perfecta para esto, y salió de la caja tanto en Linux como en Windows. La plantilla de cabal que proporcionó ayudó mucho, solo tuve que cambiar HUnit a base. –
Tenga en cuenta que también puede usar 'cabal init' para crear un proyecto vacío. Finalmente, 'cabal' es parte de la [Plataforma Haskell] (http://hackage.haskell.org/platform), por lo que estará en todas sus máquinas si usa la distribución central. –