在ghci中显示完整类型

Display full type in ghci

我有一个 ByteString 类型的变量。我想看看它属于哪个包。这对于 ByteString 类型可能很有用,因为在不同的包中有几种不同的实现。

例如,我有以下代码:

import qualified Data.ByteString.Lazy.Char8 as BSL
json :: String
json = "{\"document\":{\"name\":\"doc1\",\"content\":\"content1\"}}"

我想在 ghci> :t BSL.pack json 时获得完整的包裹。我得到的是 BSL.pack json :: ByteString,而我想要的是 BSL.pack json :: Data.ByteString.Lazy.Char8。有什么办法可以在 ghci 提示符下得到这种信息吗?

GHCi 应该使用您可以在文件中使用的相同语法。也就是说,如果你 import Data.ByteString.Lazy.Char8 unqualified 你将得到 ByteString unqualified,否则你应该得到 qualified type.

检查 Haskell 文件中的所有导入:是否以不合格的方式导入 ByteString 类型?

如下所示,我无法在小型 GHCi 会话中重现您的问题:

> import qualified Data.ByteString.Lazy.Char8 as BSL
> let a :: String ; a = "aa"
> :t BSL.pack a
BSL.pack a :: BSL.ByteString