Как добавить пакет" контейнеры " в мой.файл cabal (без перезаписи стеком во время компиляции)?
Я работаю над задачей "римские цифры" из трека exercism Haskell и следовал их инструкция по установке стека. Я работаю над коробкой Fedora 24.
пока я работал с модулями Haskell с базы, у меня не было проблем. Теперь я пытаюсь импортировать данные.Модуль карты. Он отлично работает с помощью командной строки ГГц:
$ 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 на haskell.org:
что вам нужно сделать, это добавить контейнеры в сборку-зависит от вашего .файл Кабал-клана.
Я предполагаю, что они имеют в виду римские цифры файла.Кабал-это в моем рабочем каталоге. Содержание являются:
-- 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
Я попытался добавить " контейнеры "в build-depends в обоих разделах" library "и" test-suite", но когда я запускаю
$ stack test
ошибка сохраняется, и .файл cabal возвращается к тому же содержимому, показанному выше.
какие-нибудь советы? Высоко ценится!
1 ответов
это намекает на проблему:
-- This file has been generated from package.yaml by hpack version 0.14.0.
--
-- see: https://github.com/sol/hpack
hpack альтернативный, основанный на ЯМЛ формат спецификации для пакетов Хаскелл которые можно использовать вместо традиционного формата Кабал. The hpack
программа может быть использована для преобразования спецификации из формата hpack в формат cabal, чтобы иметь возможность интегрироваться с остальной частью Haskell toolchain.
некоторые базовая поддержка hpack был добавлен в стек некоторое время назад. Он проверяет наличие файла package.yaml
в текущем каталоге, который является стандартным именем для спецификаций пакета формата hpack, и если он существует, он работает hpack
преобразовать его в файл cabal, а затем продолжить строительство как обычно. Это то, что топчет твое .файл Кабал-клана.
чтобы решить эту проблему, либо:
- изменить
package.yaml
вместоroman-numerals.cabal
для достижения того же эффекта. - удалить
package.yaml
и продолжайте работать непосредственно сroman-numerals.cabal
.
синтаксис для добавления зависимостей в формате hpack:
dependencies:
- base
- containers