Поиск…


Установка стека

Mac OS X

Использование Homebrew :

brew install haskell-stack

Создание простого проекта

Чтобы создать проект под названием helloworld run:

stack new helloworld simple

Это создаст каталог helloworld с файлами, необходимыми для проекта Stack.

Состав

Файловая структура

Простой проект содержит следующие файлы:

➜  helloworld ls 
LICENSE          Setup.hs         helloworld.cabal src              stack.yaml

В папке src есть файл с именем Main.hs Это «отправная точка» проекта helloworld . По умолчанию Main.hs содержит простой «Hello, World!». программа.

Main.hs

module Main where

main :: IO ()
main = do
  putStrLn "hello world"

Запуск программы

Убедитесь, что вы находитесь в каталоге helloworld и запускаете:

stack build # Compile the program
stack exec helloworld # Run the program
# prints "hello world"

Пакеты Stackage и изменение версии LTS (resolver)

Stackage - это хранилище пакетов Haskell. Мы можем добавить эти пакеты в проект стека.

Добавление объектива в проект.

В проекте стека есть файл с именем stack.yaml . В stack.yaml есть сегмент, который выглядит так:

resolver: lts-6.8

Stackage хранит список пакетов для каждой ревизии lts . В нашем случае нам нужен список пакетов для lts-6.8 Чтобы найти эти пакеты, посетите:

https://www.stackage.org/lts-6.8 # if a different version is used, change 6.8 to the correct resolver number.

Просматривая пакеты, есть объектив-4.13 .

Теперь мы можем добавить языковой пакет, изменив раздел helloworld.cabal :

  build-depends: base >= 4.7 && < 5

чтобы:

  build-depends: base >= 4.7 && 5,
                 lens == 4.13

Очевидно, что если мы хотим изменить новый LTS (после его выхода), мы просто изменим номер резольвера, например:

resolver: lts-6.9

При следующей структуре stack build Stack будет использовать версию LTS 6.9 и, следовательно, загружать некоторые новые зависимости.

Создание и запуск проекта стека

В этом примере имя нашего проекта - «helloworld», который был создан с помощью stack new helloworld simple

Сначала мы должны построить проект со stack build а затем мы можем запустить его с помощью

stack exec helloworld-exe

Установка стека

Запустив команду

stack install 

Стек скопирует исполняемый файл в папку

/Users/<yourusername>/.local/bin/

Профилирование стеком

Настройте профилирование для проекта через stack . Сначала создайте проект с помощью флага --profile :

stack build --profile

Флаги GHC не требуются в файле cabal для работы (например, -prof ). stack автоматически включит профилирование как для библиотеки, так и для исполняемых файлов в проекте. В следующий раз, когда исполняемый файл запускается в проекте, можно использовать обычные +RTS флаги:

stack exec -- my-bin +RTS -p

Просмотр зависимостей

Чтобы узнать, от каких пакетов зависит ваш проект, вы можете просто использовать эту команду:

stack list-dependencies

Таким образом, вы можете узнать, какую версию ваших зависимостей вы фактически вытащили из стека.

Проекты Haskell часто оказываются во многих библиотеках косвенно, и иногда эти внешние зависимости вызывают проблемы, которые необходимо отслеживать. Если вы обнаружите, что вы хотите идентифицировать внешнюю зависимость изгоев, вы можете выполнить grep через весь график зависимостей и определить, какая из ваших зависимостей в конечном итоге вытягивает нежелательный пакет:

stack dot --external | grep template-haskell

stack dot выводит граф зависимостей в текстовой форме, которую можно искать. Его также можно посмотреть:

stack dot --external | dot -Tpng -o my-project.png

Вы также можете установить глубину графика зависимостей, если хотите:

stack dot --external --depth 3 | dot -Tpng -o my-project.png


Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow