我有一个模块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数据构造函数的方法?
答案 0 :(得分:2)
不要使用类型同义词来强制执行抽象障碍,除了可能是小的私有障碍。他们不擅长。如果要隐藏Event
,请使用newtype和pattern的同义词。