这不是一个重要的问题,但我只是想知道我是否有一些模块在堆栈中(或者cabal在这种情况下不重要)Haskell项目,它在很多其他模块中导入,如何使它们 * 公开 *,这样我就不需要继续导入它们?我还发现导入模块不是 * 可传递的 * 也可以。我的意思是这不会是一个问题,但它将保存重复在一个大项目。感谢您的帮助提前。
eit6fx6z1#
我还发现导入模块也不是可传递的。这确实是正确的。但你可以 reexport 项目。这是经常做的,以尽量减少进口。例如,如果你创建一个 Yesod web服务器,通常有一个名为Import的模块,它会重新导出所有重要的方面。你可以通过简单地在导出列表中提到模块中作用域中的变量来重新导出。例如,我们可以创建一个模块Import,它从两个模块导出maybe和either:
Import
maybe
either
module Import (maybe, either) where import Data.Either (either) import Data.Maybe (maybe)
字符串通过导入Import模块,我们得到了作用域中的maybe和either,它们来自两个不同的模块。
1条答案
按热度按时间eit6fx6z1#
我还发现导入模块也不是可传递的。
这确实是正确的。但你可以 reexport 项目。这是经常做的,以尽量减少进口。例如,如果你创建一个 Yesod web服务器,通常有一个名为
Import
的模块,它会重新导出所有重要的方面。你可以通过简单地在导出列表中提到模块中作用域中的变量来重新导出。例如,我们可以创建一个模块
Import
,它从两个模块导出maybe
和either
:字符串
通过导入
Import
模块,我们得到了作用域中的maybe
和either
,它们来自两个不同的模块。