サーチ…


スタックのインストール

Mac OSX

自作を使う:

brew install haskell-stack

シンプルなプロジェクトを作成する

helloworldというプロジェクトを作成するには:

stack new helloworld simple

これにより、 helloworldというディレクトリが作成され、スタックプロジェクトに必要なファイルが作成されます。

構造

ファイル構造

シンプルなプロジェクトには以下のファイルが含まれています:

➜  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"

パッケージの積み重ねとLTS(リゾルバ)バージョンの変更

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スタックはLTS 6.9バージョンを使用し、したがっていくつかの新しい依存関係をダウンロードします。

スタックプロジェクトのビルドと実行

この例では、プロジェクト名は「helloworld」です。これは、 stack new helloworld simplestack new helloworld simpleで作成したものです

まず、 stack buildを使用してプロジェクトを構築してから、

stack exec helloworld-exe

スタックインストール

コマンドを実行すると

stack install 

スタックは実行可能ファイルをそのフォルダにコピーします

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

スタックによるプロファイリング

stackを使用してプロジェクトのプロファイリングを設定しstack 。まず、-- --profileフラグを使ってプロジェクトをビルドします。

stack build --profile

GHCフラグは、 -profように動作するためにカバールファイルでは必要ありません。 stackは、プロジェクト内のライブラリと実行可能ファイルの両方のプロファイリングを自動的に有効にします。次回実行可能ファイルがプロジェクトで実行されるときは、通常の+RTSフラグを使用できます。

stack exec -- my-bin +RTS -p

依存関係の表示

あなたのプロジェクトが直接依存しているパッケージを知るには、次のコマンドを使います:

stack list-dependencies

このようにして、依存関係のどのバージョンがスタックによって実際にプルダウンされているかを知ることができます。

Haskellのプロジェクトは頻繁に間接的に多くのライブラリを引き出していることが多く、時にはこれらの外部依存関係が追跡する必要がある問題を引き起こします。あなたが識別したい不正な外部依存関係を見つけた場合は、依存グラフ全体を網羅し、どの依存関係が最終的に望ましくないパッケージを引っ張っているのかを特定することができます:

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