Я работаю над заданием «римские цифры» с трека Haskell по тренировкам и следил за их instructions to installing stack. Я работаю над блоком Fedora 24.Как добавить пакет контейнеров в мой .cabal файл (не перезаписывая стек во время компиляции)?
До тех пор, пока я работал с модулями Haskell с базы, у меня не было проблемы. Теперь я пытаюсь импортировать модуль Data.Map. Он отлично работает с помощью команды 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>
Однако, когда я пытаюсь импортировать его из внутри моего Src файла с помощью команды:
import qualified Data.Map as M (foldlWithKey, fromList)
Я бегу в проблемы, когда я пытаюсь запустить тест:
$ 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
(...)
Я гугл проблемы и нашел простое решение в the Cabal FAQ at haskell.org:
Что вам нужно сделать, так это добавить контейнеры в сборку - зависит от вашего файла .cabal.
Я предполагаю, что они означают файл roman-numbersals.cabal, который находится в моем рабочем каталоге. Содержание являются:
-- 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
Я пытался добавить «контейнеры» для сборки, зависит либо и как «библиотека» и «тест-люкс» секций, но когда я бегу
$ stack test
ошибка сохраняется, а файл .cabal возвращается к тому же содержимому, показанного выше.
Любые указатели? Очень признателен!
Спасибо! Это сработало. – ktiu