perl – haskell中任何子集模块导入系统?

前端之家收集整理的这篇文章主要介绍了perl – haskell中任何子集模块导入系统?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
使用Perl的 standard module exports,您可以指定按标签导出/导入的功能集.

所以,你可以拥有像:all或:private或:test等等.

从历史上看,建议似乎是如果你只是想要一些半私有函数,那么就有一个“内部”模块并重新导出它的“默认”部分.

我开始想要一个用于测试目的的半私有接口.那么,这仍然是做到这一点的方式,还是我在最近的ghc中遗漏了什么?

解决方法

不,这在Haskell中是不可能的.

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导入.

此外,与perl不同,ghc不支持在同一个模块中定义多个模块
文件yet,这使得这个解决方案有点重量级.

猜你在找的Perl相关文章