使用堆栈导入子包

Importing sub-packages with stack

我不明白如何在堆栈中导入 "sub-packages"(如果这不是正确的术语,请告诉我,以便我进行编辑)。

这是一个简单文件的顶部:

{-# 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

Data.Conduit.Binary is a module. It is part of a package called conduit-extra。包是 Stack(和 cabal-install,你是否使用它)安装的,以及你应该添加到 .cabal 文件的 build-depends 的内容:

  build-depends:       base >= 4.7 && < 5,
                       conduit,
                       conduit-extra

至于Data.Conduit.List, it is part of the conduit package, so you don't need another entry for it. One quick way of clarifying such things is doing a Hoogle search for the module(它所属的包会在文档页面的顶部栏中指出)。

另请参阅:What's the difference between module, package and library in Haskell?; Packages, modules and import in Haskell