使用Perl的
standard module exports,您可以指定按标签导出/导入的功能集.
所以,你可以拥有像:all或:private或:test等等.
从历史上看,建议似乎是如果你只是想要一些半私有函数,那么就有一个“内部”模块并重新导出它的“默认”部分.
我开始想要一个用于测试目的的半私有接口.那么,这仍然是做到这一点的方式,还是我在最近的ghc中遗漏了什么?
解决方法
不,这在Haskell中是不可能的.
module Foo.Private ( private1,private2,private3 ) where ... module Foo ( public1,public2,public3 ) where ...
此外,如果您希望Foo.Private从Foo重新导出所有内容:
module Foo.Private ( module Foo,private1,private3 ) where import Foo ...
但如果Foo反过来导入Foo.Private,那么你将要么使用它
递归模块,或将实际定义移动到第三个模块,
说Foo.Base,将由Foo和Foo.Private导入.