通过仅指定一对括号作为导出列表,可以不导出模块的名称:
module MyModule () where
在哪些情况下这会有用吗?据我所知,导入MyModule
的任何文件都无法使用MyModule
内声明的任何函数或类型。在这一点似乎是语言的一个无用的功能,但我想这是有原因的。
答案 0 :(得分:7)
这样的模块仍然会导出其中定义的任何类实例。
module A where
class Foo f where
foo :: f
data Bar = Bar deriving (Show)
module B () where
import A
instance Foo Bar where
foo = Bar
module C where
import A
import B -- won't compile without this import!
main = print (foo :: Bar)