代码之家  ›  专栏  ›  技术社区  ›  Mark Karavan

使用堆栈导入子包

  •  0
  • Mark Karavan  · 技术社区  · 6 年前

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

    下面是一个简单文件的顶部:

    {-# LANGUAGE OverloadedStrings #-}
    
    module Conduit where
    
    import Data.Conduit
    import qualified Data.Conduit.List as CL
    import qualified Data.Conduit.Binary as CB
    

    列出了两个依赖项。在myproject中。阴谋集团,我有:

    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 回复  |  直到 6 年前
        1
  •  3
  •   duplode    6 年前

    Data.Conduit.Binary 是一个 单元 . 它是 包裹 打电话 conduit-extra . 软件包是Stack(和cabal install,您是否使用它)安装的内容,以及您应该向 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 .