関数の型を宣言するとき、その目的のためだけに「内部」モジュールから追加のコンストラクターをインポートする必要があることに気付きました。以下は (簡略化された) 例の 1 つです。
import Data.Text.Encoding
import Data.Text.Internal
import Data.ByteString.Internal
foo :: Data.ByteString.Internal.ByteString -> Data.Text.Internal.Text
foo = decodeUtf8
これらのモジュールは、私が推測する何らかの目的で「内部」と名付けられています。それでも、それらは一般に公開されている型を持っています。それらに明示的に依存することは良い習慣ですか?