5

reactive-banana新しい Haskell プロジェクトで使用したい。私はcabal-installまたはstackそれ以前に使用したことがありません。を使用してディレクトリを作成し、その中にプロジェクト ファイルを初期化しましたstack newnew-template.cabalディレクトリにとの 2 つのファイルが表示されますstack.yaml

依存関係を設定し、それらがダウンロードされてコンパイルされていることを確認するにはどうすればよいですか?

- reactive-banana-0.8.0.2最初にのstack.yaml下に追加しようとしましたが、とextra-deps:の両方がダウンロードされませんでした。次に、これに呼び出される部分を拡張しました。stack buildstack solverlibrarynew-template.cabal

library
  hs-source-dirs:      src
  exposed-modules:     Lib
  build-depends:       base >= 4.7 && < 5
                     , reactive-banana >= 0.8
  default-language:    Haskell2010

を実行しようとするたびに、いくつかのパッケージを下stack buildに追加するようにというエラーと提案が表示されてクラッシュし、最終的にすべてのパッケージがインストールされるまでこれが 3 回発生し、それらをREPL にインポートできました。stack.yamlextra-deps:stack ghci

だから私の質問は、慣用的な使用方法は何stackですか? 依存関係やその他のプロジェクト メタデータを指定するには、次の 2 つのファイルのどちらを使用すればよいですか? 平均的な Haskell 開発者のサンプル ワークフローはstack?

4

2 に答える 2

5

使用するとき、stack私は通常、ファイルにバージョンの境界を入れません.cabal。ファイルのresolverandextra-deps設定によって、stack.yaml選択するパッケージのバージョンが決まります。

stack.yamlこれは、reactive-banana-0.8.1.2 を取り込むファイルです。

flags: {}
packages:
- '.'
extra-deps:
- reactive-banana-0.8.1.2
- psqueues-0.2.0.2
resolver: lts-2.17

私の.cabalファイルには次のものがあります。

  build-depends:       base >= 4.7 && < 5, reactive-banana

反応バナナ バージョンは、stack.yaml ファイルによって固定されます。

GHC 7.10 を使いたい場合は、リゾルバを のように変更してくださいnightly-2015-06-17

すべての依存関係が満たされるまで、不足している依存関係を実行してファイルに追加extra-depsするだけで、繰り返し決定します。stack buildstack.yaml

これは、 Stackageにないパッケージ ( reactive-banana など) でのみ行う必要があります。よく使用されるパッケージの多くは Stackage にあり、それらのバージョンはresolver設定によって決定されます。

于 2015-07-23T12:12:27.750 に答える