Pracuję nad zadaniem "liczby rzymskie" z egzekucji Haskella i podążam za ich numerem instructions to installing stack. Pracuję nad pudełkiem Fedory 24.Jak dodać pakiet "containers" do mojego pliku .cabal (bez nadpisywania przez stos podczas kompilacji)?
Dopóki pracowałem z modułami Haskell z poziomu podstawowego, nie miałem problemu. Teraz próbuję zaimportować moduł Data.Map. Współpracuje przy użyciu wiersza polecenia ghci:
$ ghci
GHCi, version 7.8.4: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Prelude> import Data.Map
Prelude Data.Map>
Jednak, gdy próbuję zaimportować ją od wewnątrz mojego pliku src za pomocą polecenia:
import qualified Data.Map as M (foldlWithKey, fromList)
używam do problemów przy próbie uruchomienia test:
$ stack test
roman-numerals-0.0.0: build (lib + test)
Preprocessing library roman-numerals-0.0.0...
[2 of 2] Compiling Roman (...)
(...) /roman-numerals/src/Roman.hs:3:1: error:
Failed to load interface for ‘Data.Map’
It is a member of the hidden package ‘containers-0.5.7.1’.
Perhaps you need to add ‘containers’ to the build-depends in your .cabal file.
Use -v to see a list of the files searched for.
Progress: 1/2
(...)
google problem i znalazł rozwiązanie proste w the Cabal FAQ at haskell.org:
To, co musisz zrobić, to dodać kontenery do pliku build-depends w pliku .cabal.
Zakładam, że mają na myśli plik roman-numerals.cabal, który znajduje się w moim katalogu roboczym. Zawartość to:
-- This file has been generated from package.yaml by hpack version 0.14.0.
--
-- see: https://github.com/sol/hpack
name: roman-numerals
version: 0.0.0
build-type: Simple
cabal-version: >= 1.10
library
hs-source-dirs:
src
build-depends:
base
exposed-modules:
Roman
other-modules:
Paths_roman_numerals
default-language: Haskell2010
test-suite test
type: exitcode-stdio-1.0
main-is: Tests.hs
hs-source-dirs:
test
build-depends:
base
, roman-numerals
, hspec
default-language: Haskell2010
Próbowałem dodać "kontenery" do budowania zależy zarówno i zarówno "biblioteki" i "test-suite" sekcje, ale gdy uruchamiam
$ stack test
błąd nadal występuje, a plik .cabal zostaje przywrócony do tej samej zawartości, co powyżej.
Jakieś wskazówki? Bardzo doceniane!
Dziękujemy! To zadziałało. – ktiu