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]'.`
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.
Ces étapes générales m'ont aidé à résoudre des problèmes similaires:
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).
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
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)