2011-06-13 17 views
6

Tengo dos archivos en la misma carpeta, y Eval.hsData.hs, módulo en módulo Eval.hs importaciones TI.Data en Data.hs, cuando intento cargar Eval.hs en el interactivo (en modo emacs Haskell: Ctrl-c, Ctrl l), que dijo que no puede encontrar el módulo definido en Data.hs, pero se cargó con éxito antes, ¿por qué de repente no puede? por cierto, he notado que la primera vez que ejecute Ctrl-c, Ctrl l, la ventana interative:¿Por qué de repente no se puede encontrar el módulo?

GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help 
Loading package ghc-prim ... linking ... done. 
Loading package integer-gmp ... linking ... done. 
Loading package base ... linking ... done. 
Prelude> :cd ~/.cabal/               
Prelude> :load "../hs/TI/Eval.hs"            

../hs/TI/Eval.hs:2:7:               
    Could not find module `TI.Data': 
     Use -v to see a list of the files searched for. 
Failed, modules loaded: none. 

Respuesta

6

A veces tengo este mismo problema con haskell-mode en Emacs. Mi solución es

Prelude> :cd ~/hs/TI 
Prelude> :load "Eval.hs" 

Ahora, cuando se desea volver a cargar el módulo que tiene que utilizar

Prelude> :r 

en lugar de Ctrl + C, Ctrl-l.

Si alguien conoce una mejor manera, por favor, hágamelo saber.

-deech

+0

Me metí en este problema ahora y después de un poco de violín, creo que el problema tiene que ver con el modo haskell que tiene cierta sensibilidad de cabal. Si hay un archivo cabal en un directorio principal al cargar el archivo fuente en un búfer, ghci comenzará desde allí hasta que se recargue el búfer del archivo fuente. Entonces, ya sea eliminando el archivo cabal o agregando alguna declaración de que el módulo que está tratando de cargar es parte del módulo cabal debería solucionar el problema. – worldsayshi

0

Probar:

Prelude> :cd ~/hs 
Prelude> :load "TI/Eval.hs" 

Si los módulos son en realidad como Subdirectory.Contains.A continuación, el directorio de trabajo tiene que ser el directorio Subdirectory .

+0

Sí, lo intenté. Pero todavía no puede encontrar el módulo en B –

+0

¿Desde el punto en que funcionó ha compilado cualquiera de los módulos a '.o'? ¿Son parte de un paquete cabal? – vivian

+0

los módulos no son parte del paquete cabal ... ¿Debería compilar los dos módulos para .o otra vez? –

0

intento de añadir

(inferior-haskell-find-project-root nil) 

a las variables de ajuste personalizado. Ya no será: cd.

una solución mucho mejor sería encontrar por qué la función en inf-haskell.el no acaba de funcionar

+0

Esto no parece funcionar. –

0

sólo tiene que ejecutar

:set -isrc -imyothersrcdir 

Para añadir ningún directorios de origen. Puede poner esta línea en un archivo .ghci en el directorio desde el que ejecuta GHCi.

Como alternativa, simplemente use cabal repl, que hace esto por usted en función de su archivo cabal.

Cuestiones relacionadas