2011-10-28 14 views
5

Puse algunas funciones en un archivo. ¿En qué parte de mi PC debería guardar este archivo para que pueda cargar fácilmente mis funciones?¿Dónde guardo mis "módulos" Haskell?

Estoy utilizando la plataforma Haskell en una computadora con Windows de 64 bits.

+1

En la nube ...

Respuesta

9

Normalmente pongo mis módulos en el mismo árbol de directorios, y comienzo ghci en el directorio raíz del árbol. Entonces los módulos pueden importarse entre sí, y puedo fácilmente :load módulos en ghci de forma interactiva.

$ ghci 

.... loading .... 

Prelude> :load directory/subdirectory/mymodule.hs 
+0

Mi '' ghci' se encuentra en C: \ Archivos de programa (x86) \ Haskell Platform \ 2011.2.0.0 \ bin'. ¿Los pongo aquí? – Dynamic

+0

¡No! Cuando se instala, debe haberse incluido en la ruta o una variable del entorno, para que pueda ejecutar 'ghci' desde la línea de comando, sin importar en qué directorio se encuentre. Si las variables de entorno no están configuradas correctamente, puede cambiarlos manualmente a través del panel de control. –

+0

Espera ... ¿qué? ¿Qué es lo que tiene sus funciones en su PC? – Dynamic

2

Si desea que los módulos sean accesibles desde unos pocos proyectos diferentes, lo recomiendo para crear un paquete de Cabal para ellos e instalarlo utilizando cabal install. No es necesario publicar en hackage: cabal install sin argumentos busca el archivo .cabal en el directorio actual e instala el paquete correspondiente.

Si desea que sus módulos sean accesibles desde un único proyecto, la práctica habitual de organizar sus fuentes en un árbol de carpetas jerárquicas se aplica también a Haskell. Déjame mostrarte un ejemplo:

Hello/World.hs 
Foo/Bar.hs 
Quux.hs 
Hello.hs 

Hello/World.hs debe tener module Hello.World where en la cabecera. El módulo principal debe tener module Main, pero el nombre real del archivo puede ser cualquier cosa (por ejemplo, Quux.hs). En Foo/Bar.hs puede usar import Hello.World. Cuando carga Foo/Bar.hs en ghci, el directorio actual debe ser la raíz de su árbol, de lo contrario no encontrará Hello.World. Puede pasar nombres de módulo en lugar de nombres de archivo a ghci: p. ghci Hello.World funcionará.

Éstos son la documentación:

http://haskell.org/ghc/docs/latest/html/users_guide/separate-compilation.html

http://haskell.org/ghc/docs/latest/html/users_guide/packages.html

+0

+1 para esto. Cabal es realmente muy fácil de usar ahora; para este caso de uso es casi completamente automático ('cabal init' produce un archivo' .cabal' para ti, y solo necesitas completar las dependencias de compilación) –

Cuestiones relacionadas