使用Haskell一次导入整个模块

时间:2015-03-21 12:03:26

标签: haskell cabal

我对Haskell的库问题感到尴尬。 我完成了一个由几个文件组成的库

src/MyLib/Firstbib.hs
src/MyLib/Secondbib.hs
...
src/MyLib/Lastbib.hs

此时,在cabal install之后我可以用

分别导入每个文件
import MyLib.Firstbib
import MyLib.Secondbib
import MyLib.Lastbib

一切都很好

现在,我想通过一个简单的导入导入MyLib的所有这些部分:

import MyLib

我无法达成目标。

我尝试创建一个名为src/MyLib.hs的文件,其中包含:

module MyLib where 
import MyLib.Types 
import MyLib.Functions
import MyLib.Algo.Line 
import MyLib.Algo.Point  

并用Cabal公开它

Library
  -- Modules exported by the library.
  Hs-Source-Dirs:     src
  Exposed-modules:      MyLib
                      , MyLib.Functions
                      , MyLib.Types
                      , MyLib.Algo.Line
                      , MyLib.Algo.Point

但它不起作用。!

导入多个文件只有一个模块导入的正确方法是什么(例如Gtk2Hs)?

1 个答案:

答案 0 :(得分:6)

这就是MyLib的样子 - 可能有不同的缩进:

module MyLib
  (module MyLib.Types
  ,module MyLib.Functions
  ,module MyLib.Algo.Line
  ,module MyLib.Algo.Point
  ) where 
import MyLib.Types 
import MyLib.Functions
import MyLib.Algo.Line 
import MyLib.Algo.Point  

当您在导出列表中放置这样的模块时,会导出您的模块所知道的所有符号。

您可以确定导出此模块的哪个部分,例如:

module ExampleLib
  (module Data.Maybe
  ) where 
import Data.Maybe (fromJust)

上述内容只会从fromJust重新导出Data.Maybe,而不是整个Data.Maybe模块。