2016-07-01 8 views
1

私はちょうど何かをエクスポートしないように見えるHaskellモジュールを突き抜けました。 Schwifty/Swift/M105/Types.hsHaskellモジュールが輸出を宣言していないとはどういう意味ですか?

module Schwifty.Swift.M105.Types where 

それをインポートする他のモジュールがプロジェクトにあります。

import Schwifty.Swift.M105.Types 

私は、Haskellモジュールは常にエクスポートを宣言しなければならないと考えました。あなたがしなければどういう意味ですか? A Gentle Introduction to Haskell, Version 98から

答えて

6

あなたは区別しなければならない

  1. 空のエクスポート・リスト(module Foo() where)と、すべての(module Foo where)で
  2. なしエクスポートリスト。

空のエクスポートリストとは、値または型定義をエクスポートしないことを意味します。しかし、モジュールは、すべてのインスタンス宣言をモジュール自体から、およびインポートされたすべてのモジュールからエクスポートします。したがって、空のエクスポートリストを持つモジュールは便利です。

エクスポートのリストはありません。モジュール自体で行われたすべての値と型定義をエクスポートします。 (もちろん、すべてのインスタンス宣言も)。

5

モジュールのキーワード以下のエクスポートリストが省略されている場合は、モジュールのトップレベルでバインドされている名前のすべてがエクスポートされます。

関連する問題