web-dev-qa-db-ja.com

モジュール `Data.Map 'が見つかりませんでした-非表示のパッケージのメンバーです

まず、新しいワークスペースを作成しました。

stack new xxxx
stack init
stack build

その後

cd xxx\app
stack ghci
import Data.Map

Data.CharData.Listなどの他のモジュールをインポートできますが、Data.Mapはインポートできません。 GHCiは私に言った:

Could not find module 'Data.Map'
 It is a member of the hidden package '[email protected]'.`
18
AurevoirXavier

Data.CharおよびData.Listをインポートできるのは、これらがGHCに含まれ、GHCiで常に読み込まれるパッケージbaseの一部であるためです。対照的に、Data.Mapは外部ライブラリcontainersにあります。 stack ghciを使用してロードする1つの方法は、containersbuild-dependsを使用してcabalファイルを追加することです。これにより、xxxxのスタック環境にインストールされ、アクセスできるようになります。

17
crockeea

これらの一般的な手順 は、同様の問題を解決するのに役立ちました。

  1. Hoogle または Stackage を使用して、モジュールが存在するパッケージを検索します

    Hoogle および Stackagecase-sensitiveであることに注意してください。見上げる Data.Map in Hoogle 以下のようなリストが生成されます。 Stackage のスタイルは少し異なりますが、基本は同じです(主にルックアップにHoogleを使用しているため)。

結果の見出しの下にある緑色の線は、含まれている名前を示します。

(1)パッケージ(スモールキャップ)および

(2)モジュール(大文字)。

Hoogle result for Data.Map

  1. 開くproject-name.cabalプロジェクトルート内に必要なパッケージを追加しますbuild-depends:

    library
      hs-source-dirs:
          src
    
      build-depends:
          base >= 4.7 && < 5
        , containers
    
      exposed-modules:
          Lib
    
  2. 問題stack build依存関係をダウンロードしてビルドするには

    (またはstack ghci REPLで使用する場合)

28
toraritte