我不明白如何在堆栈中导入“子包”(如果这不是正确的术语,请告诉我,以便我可以编辑)。
这是一个简单文件的顶部:
{-# LANGUAGE OverloadedStrings #-}
module Conduit where
import Data.Conduit
import qualified Data.Conduit.List as CL
import qualified Data.Conduit.Binary as CB
列出了两个依赖项。在myproject.cabal中,我有:
executable myproject
hs-source-dirs: src
main-is: Main.hs
default-language: Haskell2010
build-depends: base >= 4.7 && < 5,
conduit
stack build -v
给了我这个错误:
2018-02-08 13:28:06.923836: [warn] 7 | import qualified Data.Conduit.Binary as CB
我不确定在cabal可执行指令中包含哪些内容,每个都会抛出错误:
build-depends: base >= 4.7 && < 5,
conduit,
conduit.list,
conduit.binary
build-depends: base >= 4.7 && < 5,
conduit,
conduit-list
conduit-binary
答案 0 :(得分:3)
Data.Conduit.Binary
是模块。它是名为conduit-extra
的包的一部分。包是什么Stack(和cabal-install,你使用它而不是)安装,以及你应该添加到.cabal文件的build-depends
:
build-depends: base >= 4.7 && < 5,
conduit,
conduit-extra
对于Data.Conduit.List
,它是conduit
包的一部分,因此您不需要其他条目。澄清这些事情的一种快速方法是doing a Hoogle search for the module(它所属的包将在文档页面的顶部栏中指出)。
另见:What's the difference between module, package and library in Haskell?; Packages, modules and import in Haskell