Haskell Language
Apilar
Buscar..
Instalación de la pila
Mac OS X
Usando Homebrew :
brew install haskell-stack
Creando un proyecto simple
Para crear un proyecto llamado helloworld run:
stack new helloworld simple
Esto creará un directorio llamado helloworld
con los archivos necesarios para un proyecto de pila.
Estructura
Estructura de archivos
Un proyecto simple tiene los siguientes archivos incluidos en él:
➜ helloworld ls
LICENSE Setup.hs helloworld.cabal src stack.yaml
En la carpeta src
hay un archivo llamado Main.hs
Este es el "punto de partida" del proyecto helloworld
. Por defecto, Main.hs
contiene un simple "¡Hola mundo!" programa.
Main.hs
module Main where
main :: IO ()
main = do
putStrLn "hello world"
Ejecutando el programa
Asegúrate de estar en el directorio helloworld
y ejecuta:
stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"
Paquetes de apilamiento y cambio de la versión LTS (resolución)
Stackage es un repositorio de paquetes de Haskell. Podemos agregar estos paquetes a un proyecto de pila.
Añadiendo lentes a un proyecto.
En un proyecto de pila, hay un archivo llamado stack.yaml
. En stack.yaml
hay un segmento que se parece a:
resolver: lts-6.8
Stackage mantiene una lista de paquetes para cada revisión de lts
. En nuestro caso, queremos la lista de paquetes para lts-6.8
Para encontrar estos paquetes, visite:
https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.
Mirando a través de los paquetes, hay un Lens-4.13 .
Ahora podemos agregar el paquete de idioma modificando la sección de helloworld.cabal
:
build-depends: base >= 4.7 && < 5
a:
build-depends: base >= 4.7 && 5,
lens == 4.13
Obviamente, si queremos cambiar un LTS más nuevo (después de su lanzamiento), simplemente cambiamos el número de resolución, por ejemplo:
resolver: lts-6.9
Con la siguiente stack build
pila utilizará la versión LTS 6.9 y, por lo tanto, descargará algunas nuevas dependencias.
Construir y ejecutar un proyecto de pila
En este ejemplo, nuestro nombre de proyecto es "helloworld", que se creó con stack new helloworld simple
Primero tenemos que construir el proyecto con la stack build
y luego podemos ejecutarlo con
stack exec helloworld-exe
Instalación de pila
Ejecutando el comando
stack install
Stack copiará un archivo ejecutable a la carpeta.
/Users/<yourusername>/.local/bin/
Perfilando con Stack
Configurar perfiles para un proyecto a través de la stack
. Primero construye el proyecto con la bandera --profile
:
stack build --profile
Las banderas de GHC no se requieren en el archivo cabal para que esto funcione (como -prof
). stack
activará automáticamente el perfil tanto para la biblioteca como para los ejecutables en el proyecto. La próxima vez que se ejecute un ejecutable en el proyecto, se pueden usar los indicadores +RTS
habituales:
stack exec -- my-bin +RTS -p
Visualización de dependencias
Para averiguar de qué paquetes depende su proyecto directamente, simplemente puede usar este comando:
stack list-dependencies
De esta manera, puede averiguar qué versión de sus dependencias realmente se eliminó por pila.
Los proyectos de Haskell a menudo se encuentran tirando de muchas bibliotecas de manera indirecta, y algunas veces estas dependencias externas causan problemas que necesita rastrear. Si se encuentra con una dependencia externa deshonesta que le gustaría identificar, puede revisar todo el gráfico de dependencias e identificar cuál de sus dependencias está finalmente obteniendo el paquete no deseado:
stack dot --external | grep template-haskell
stack dot
imprime un gráfico de dependencia en forma de texto que se puede buscar. También se puede ver:
stack dot --external | dot -Tpng -o my-project.png
También puede establecer la profundidad del gráfico de dependencia si desea:
stack dot --external --depth 3 | dot -Tpng -o my-project.png