我刚遇到一个似乎不会导出任何东西的Haskell模块。 Schwifty/Swift/M105/Types.hs
:
module Schwifty.Swift.M105.Types where
项目中还有其他模块可以导入它。
import Schwifty.Swift.M105.Types
我认为Haskell模块总是必须声明它们的输出。什么意思,当你不这样做?
答案 0 :(得分:6)
你必须要区分
module Foo () where
)和module Foo where
)。空导出列表表示:不导出任何值或类型定义。但是,模块仍然从模块本身和所有导入的模块导出所有实例声明,因此具有空导出列表的模块可能很有用。
根本没有导出列表:导出模块本身中的所有值和类型定义。 (当然,还有所有实例声明)。
答案 1 :(得分:5)
来自A Gentle Introduction to Haskell, Version 98:
如果省略module关键字后面的导出列表,则会导出模块顶层绑定的所有名称。