web-dev-qa-db-fra.com

Impossible de trouver le module `Data.Map '- Il est membre du package caché

Tout d'abord, j'ai créé un nouvel espace de travail:

stack new xxxx
stack init
stack build

puis

cd xxx\app
stack ghci
import Data.Map

Je peux importer d'autres modules comme Data.Char et Data.List, mais je ne peux pas importer Data.Map. GHCi m'a dit:

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

La raison pour laquelle vous pouvez importer Data.Char et Data.List est qu'ils font partie du package base, qui est inclus avec GHC et est toujours chargé avec GHCi. Par contre, Data.Map est dans la bibliothèque externe containers. Une façon de le charger avec stack ghci est d'ajouter un fichier cabale avec un build-depends sur containers. Cela l'installera dans l'environnement de pile pour xxxx, il sera donc accessible.

17
crockeea

Ces étapes générales m'ont aidé à résoudre des problèmes similaires:

  1. Utilisez Hoogle ou Stackage pour trouver le package où réside le module

    Notez que Hoogle et Stackage sont sensibles à la casse. En levant Data.Map in Hoogle donne une liste similaire à celle ci-dessous. Stackage a un style légèrement différent, mais les bases sont les mêmes (principalement parce qu'il utilise également Hoogle pour la recherche).

Les lignes en vert sous les titres des résultats indiquent le (s) nom (s) du contenant

(1) emballage (s) (en petites majuscules) et

(2) module (s) (en majuscule).

Hoogle result for Data.Map

  1. Ouvrir project-name.cabal à la racine du projet et ajoutez le package requis sous build-depends:

    library
      hs-source-dirs:
          src
    
      build-depends:
          base >= 4.7 && < 5
        , containers
    
      exposed-modules:
          Lib
    
  2. Problème stack build pour télécharger et créer des dépendances

    (ou stack ghci si vous prévoyez de l'utiliser dans le REPL)

28
toraritte