使用堆栈导入子包

时间:2018-02-08 18:32:56

标签: haskell haskell-stack

我不明白如何在堆栈中导入“子包”(如果这不是正确的术语,请告诉我,以便我可以编辑)。

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

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

1 个答案:

答案 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