在为我的函数声明类型时,我注意到我需要从“内部”模块导入额外的构造函数只是为了这个目的。这是一个(简化的)示例:
import Data.Text.Encoding
import Data.Text.Internal
import Data.ByteString.Internal
foo :: Data.ByteString.Internal.ByteString -> Data.Text.Internal.Text
foo = decodeUtf8
出于某种目的,我认为这些模块被命名为“内部”。然而,他们携带的类型是出口到公众的。明确依赖它们是一种好习惯吗?