我可以在不使用ViewPatterns GHC扩展的情况下导入类型同义词的数据构造函数吗?

时间:2016-07-14 19:18:58

标签: haskell ghc

我有一个模块A和B,它们都导出Event类型。模块C为模块A Event定义了一个类型同义词,称之为InputEvent

然后我在模块D中使用模块B和模块C:

module D where

import B (Event)
import C (InputEvent)

但是,如果我尝试导入InputEvent的类型构造函数(例如,MakeEvent),则会收到错误:

Module
‘C’
does not export
‘InputEvent(MakeEvent)’

这可以通过使用ViewPatterns GHC扩展并从模块C向MakeEvent导出别名来解决:

makeEvent = MakeEvent

但是,有没有使用ViewPatterns扩展名导入MakeEvent数据构造函数的方法?

1 个答案:

答案 0 :(得分:2)

不要使用类型同义词来强制执行抽象障碍,除了可能是小的私有障碍。他们不擅长。如果要隐藏Event,请使用newtype和pattern的同义词。