まず、新しいワークスペースを作成しました。
stack new xxxx
stack init
stack build
その後
cd xxx\app
stack ghci
import Data.Map
Data.Char
やData.List
などの他のモジュールをインポートできますが、Data.Map
はインポートできません。 GHCiは私に言った:
Could not find module 'Data.Map'
It is a member of the hidden package '[email protected]'.`
Data.Char
およびData.List
をインポートできるのは、これらがGHCに含まれ、GHCiで常に読み込まれるパッケージbase
の一部であるためです。対照的に、Data.Map
は外部ライブラリcontainers
にあります。 stack ghci
を使用してロードする1つの方法は、containers
にbuild-depends
を使用してcabalファイルを追加することです。これにより、xxxx
のスタック環境にインストールされ、アクセスできるようになります。
これらの一般的な手順 は、同様の問題を解決するのに役立ちました。
Hoogle または Stackage を使用して、モジュールが存在するパッケージを検索します
Hoogle および Stackage はcase-sensitiveであることに注意してください。見上げる Data.Map
in Hoogle 以下のようなリストが生成されます。 Stackage のスタイルは少し異なりますが、基本は同じです(主にルックアップにHoogleを使用しているため)。
結果の見出しの下にある緑色の線は、含まれている名前を示します。
(1)パッケージ(スモールキャップ)および
(2)モジュール(大文字)。
開くproject-name.cabal
プロジェクトルート内に必要なパッケージを追加しますbuild-depends:
library
hs-source-dirs:
src
build-depends:
base >= 4.7 && < 5
, containers
exposed-modules:
Lib
問題stack build
依存関係をダウンロードしてビルドするには
(またはstack ghci
REPLで使用する場合)