Dado un proyecto de Haskell, ¿hay alguna forma de calcular automáticamente la lista completa de dependencias? Todas las bibliotecas de las que depende, así como las bibliotecas que se han incluido pero no son obligatorias.

9
Vlad the Impala 17 may. 2012 a las 06:40
Cabal intenta averiguar las dependencias cuando ejecuta cabal init. ¿Es ese el tipo de funcionalidad que estaba pensando?
 – 
Thomas M. DuBuisson
17 may. 2012 a las 07:04
En que etapa? Usé cabal init y no descubrió ninguna dependencia.
 – 
Vlad the Impala
17 may. 2012 a las 07:14
1
En que etapa La etapa en la que ha escrito algo de código y está listo para cabalizar su proyecto (crear un archivo .cabal). Una versión suficientemente nueva de cabal leerá los módulos e intentará inferir las dependencias.
 – 
Thomas M. DuBuisson
17 may. 2012 a las 07:40

1 respuesta

La mejor respuesta

Como dije en los comentarios, cabal-install ya hace esto (estoy usando cabal-install 0.14.0) adivinando los paquetes a través de la búsqueda de módulos (como GHCi). No tiene ninguna inteligencia real w.r.t. versiones, por lo que simplemente establece la versión para que coincida con la versión principal de lo que ha instalado.

A continuación puede verme haciendo un paquete ficticio que importa Data.Vector y cabal-install infiere que estoy usando el vector 0.9. *.

[tommd@mavlo blah]$ pwd
/tmp/blah
[tommd@mavlo blah]$ cat Data/Blah.hs 
module Data.Blah where

import Data.Vector
[tommd@mavlo blah]$ cabal init
Package name? [default: blah] 
...SNIP...
What does the package build:
   1) Library
   2) Executable
Your choice? 1
Include documentation on what each field means (y/n)? [default: n] 

Guessing dependencies...           <--- SEE, SEE! YAY!

Generating LICENSE...
Warning: unknown license type, you must put a copy in LICENSE yourself.
Generating Setup.hs...
Generating blah.cabal...

You may want to edit the .cabal file and add a Description field.
[tommd@mavlo blah]$ cat blah.cabal 
-- Initial blah.cabal generated by cabal init.  For further documentation, 
-- see http://haskell.org/cabal/users-guide/

name:                blah
version:             0.1.0.0
synopsis:            Sisponys
-- description:         
-- license:             
license-file:        LICENSE
author:              Me
maintainer:          No@No.No
-- copyright:           
-- category:            
build-type:          Simple
cabal-version:       >=1.8

library
  exposed-modules:     Data.Blah
  -- other-modules:       
  build-depends:       base ==4.5.*, vector ==0.9.*    <-- SEE?? SEE! YIPPEE!!
8
Thomas M. DuBuisson 17 may. 2012 a las 09:05
Estoy usando cabal-install version 0.10.2. Esa es la versión que se incluye con la plataforma Haskell, así que supongo que esta es una funcionalidad reciente.
 – 
Vlad the Impala
17 may. 2012 a las 09:42
Supongo que necesita la última versión 0.14.0. Incluye varias mejoras de cabal init.
 – 
Matvey Aksenov
17 may. 2012 a las 13:45