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


Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow