加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

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

发布时间:2020-12-16 06:23:21 所属栏目:大数据 来源:网络整理
导读:使用Perl的 standard module exports,您可以指定按标签导出/导入的功能集. 所以,你可以拥有像:all或:private或:test等等. 从历史上看,建议似乎是如果你只是想要一些半私有函数,那么就有一个“内部”模块并重新导出它的“默认”部分. 我开始想要一个用于测
使用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,这使得这个解决方案有点重量级.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读