我应该导入内部模块来声明我的函数类型吗?

时间:2013-09-13 19:28:53

标签: haskell module

在为我的函数声明类型时,我注意到我需要从“内部”模块导入其他构造函数,仅用于此目的。这是一个(简化)示例:

import Data.Text.Encoding
import Data.Text.Internal
import Data.ByteString.Internal

foo :: Data.ByteString.Internal.ByteString -> Data.Text.Internal.Text   
foo = decodeUtf8

我认为这些模块被命名为“内部”。然而,它们带有出口到公众的类型。明确依赖它们是好的做法吗?

1 个答案:

答案 0 :(得分:6)

Text中的Data.Text.Internal类型是声明的。但是,它会从Data.Text重新导出,因此只需导入该模块即可为您提供所需的一切。

我认为问题在于您将类型称为Data.Text.Internal.Text;如果您简单地将其称为Text它应该有效:

import Data.ByteString
import Data.Text

foo :: ByteString -> Text