【问题标题】:What does it mean when a Haskell module doesn't declare any exports?当 Haskell 模块没有声明任何导出时,这意味着什么?
【发布时间】:2016-07-01 20:23:36
【问题描述】:

我刚刚遇到了一个似乎没有导出任何内容的 Haskell 模块。 Schwifty/Swift/M105/Types.hs:

module Schwifty.Swift.M105.Types where

项目中有其他模块导入它。

import Schwifty.Swift.M105.Types

我认为 Haskell 模块总是必须声明它们的导出。你不这样做是什么意思?

【问题讨论】:

    标签: haskell


    【解决方案1】:

    你要区分

    1. 一个空的导出列表 (module Foo () where) 和
    2. 根本没有导出列表 (module Foo where)。

    空的导出列表意味着:不导出值或类型定义。但是,模块仍然会从模块本身以及所有导入的模块中导出所有实例声明,因此具有空导出列表的模块可能很有用。

    根本没有导出列表:导出模块本身中的所有值和类型定义。 (当然还有所有的实例声明)。

    【讨论】:

      【解决方案2】:

      来自A Gentle Introduction to Haskell, Version 98

      如果模块关键字后面的导出列表被省略,则所有绑定在模块顶层的名称都会被导出。

      【讨论】:

        猜你喜欢
        • 2022-12-12
        • 1970-01-01
        • 1970-01-01
        • 2013-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-28
        相关资源
        最近更新 更多