Tôi đang làm việc trên tác vụ "chữ số La Mã" từ bài tập thể dục Haskell và theo dõi instructions to installing stack. Tôi đang làm việc trên một hộp Fedora 24.Làm cách nào để thêm gói "vùng chứa" vào tệp .cabal của tôi (mà không bị ghi đè bởi ngăn xếp tại thời gian biên dịch)?
Miễn là tôi đang làm việc với các mô-đun Haskell từ cơ sở, tôi không gặp vấn đề gì. Bây giờ tôi đang cố gắng nhập mô-đun Data.Map. Nó hoạt động tốt bằng cách sử dụng dòng lệnh 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>
Tuy nhiên, khi tôi cố gắng nhập nó từ bên trong tập tin src của tôi bằng lệnh:
import qualified Data.Map as M (foldlWithKey, fromList)
Tôi chạy vào vấn đề khi tôi cố gắng chạy các bài kiểm tra:
$ 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
(...)
tôi googled vấn đề và tìm ra giải pháp đơn giản tại the Cabal FAQ at haskell.org:
Những gì bạn cần làm là thêm vùng chứa vào công cụ xây dựng phụ thuộc vào tệp .cabal của bạn.
Tôi giả sử chúng có nghĩa là tệp roman-numerals.cabal nằm trong thư mục làm việc của tôi. Nội dung bao gồm:
-- 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
Tôi cố gắng thêm "container" để xây dựng-phụ thuộc vào một trong hai và cả "thư viện" và "kiểm tra-suite" phần, nhưng khi tôi chạy
$ stack test
lỗi vẫn tồn tại và tệp .cabal được hoàn nguyên về cùng nội dung được hiển thị ở trên.
Mọi con trỏ? Nhiều đánh giá cao!
Cảm ơn bạn! Điều này làm việc. – ktiu