x32 para mac descargar 32bit haskell ghci haskell-platform

para - Haskell/GHCi-cargando módulos de diferentes directorios



haskell platform versions (4)

Mi aplicación haskell tiene la siguiente estructura de directorio:

src/ utils/Utils.hs subsystem/Subsystem.hs

El módulo Subsystem importa el módulo Utils . Me gustaría probar este código en GHCi.

El problema es que GHCi solo busca módulos disponibles en ''.'' (directorio actual), por lo que copié Utils.hs a la carpeta del subsistema y pude realizar una prueba Subsytem.hs . ¿Hay una mejor manera de hacer esto? Por ejemplo, me gustaría iniciar GHCi en el directorio src y dejar que busque módulos en los directorios ./utils y ./subsystem . ¿Puedo especificar una ruta de módulo a GHCi?


De manera predeterminada, cuando GHC busca módulos, interpreta Foo.Bar como Foo/Bar.hs Entonces, si tiene un solo proyecto, podría tener un módulo Utils.hs como Utils.hs en el directorio de nivel superior, y un módulo Utils.Fishcakes como Utils.Fishcakes Utils/Fishcakes.hs . Tenga en cuenta que Utils.hs puede existir junto con un directorio llamado Utils , o que ambos pueden existir independientemente. Un estilo común tiende a utilizar el módulo de nivel superior para simplemente reexportar elementos de los módulos que se encuentran debajo de él en la jerarquía, pero esto no es necesario. La Guía del usuario de GHC cubre el comportamiento anterior, además de describir qué otras opciones son compatibles.

Por lo que sé, en la mayoría de los casos, el código utilizará la estructura predeterminada anterior, utilizará alguna otra estructura especificada como parte de una compilación cabal o esperará que se instale como una biblioteca.



Puedes crear un archivo .ghci con algo como esto:

: set -isrc -iutils -isubsistema


Si su proyecto se parece a lo siguiente ...

src/ utils/Utils.hs subsystem/Subsystem.hs ..... myproject.cabal Setup.hs

Puede crear un archivo .ghci en el directorio raíz del proyecto, el mismo directorio en el que está src , myproject.cabal y Setup.hs . El contenido de .gchi debe ser este ...

:set -isrc/utils -isrc/subsystem

Ahora puede llamar a ghci desde el directorio raíz de su proyecto y se cargará automáticamente cualquier módulo vinculado.

$ ghci GHCi, version 7.8.3: 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>:load src/subsystem/Subsystem.hs ... should load Subsystem.hs