潜在的な名前の衝突 (他の手段で回避できる) を除いて、モジュールから必要な部分だけをインポートする利点はありますか?
import SomeModule (x, y, z)
...すべてをインポートするだけの詩。これは簡潔で保守が簡単です。
import SomeModule
たとえば、バイナリを小さくしますか?
名前の競合とバイナリ サイズの最適化は、得られるメリットの 2 つにすぎません。実際、コードの外側の世界から取得したいものを常に特定することをお勧めします。したがって、人々があなたのコードを見るときはいつでも、あなたのコードが何を要求しているかを正確に知ることができます。
これにより、インポートのリストを調べてそれらのモッキングを作成できるため、テスト用のモッキング ソリューションを作成する非常に良い機会にもなります。
残念ながら、Haskell では型クラスのインスタンスはそれほど簡単ではありません。それらは暗黙的にインポートされるため、競合が発生する可能性があります。また、特定のクラス インスタンスのみを指定する方法がないため、モックが難しくなる可能性があります。Haskell の将来のバージョンでこれが修正されることを願っています。
アップデート
上記のメリット (コードの保守とテストのモック化) は、Haskell に限定されません。実際、私が知っているように、これはJavaでも一般的な方法です。Java では、単一のクラス、または単一の静的変数/メソッドさえもインポートできます。残念ながら、メンバー関数を選択的にインポートすることはまだできません。