haskell - 在 ghci 中显示完整类型

标签 haskell ghci bytestring

我有一个 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 应使用与您的文件中使用的语法相同的语法。也就是说,如果您导入不合格的 Data.ByteString.Lazy.Char8 ,您将获得不合格的 ByteString ,否则您应该获得合格的类型。

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

正如您在下面看到的,我无法在小型 GHCi session 中重现您的问题:

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

关于haskell - 在 ghci 中显示完整类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27740254/

相关文章:

haskell - 提升(在函数式编程上下文中)与类别理论有何关系?

string - Haskell - 如何将字符串连接到字符串列表

haskell - 使用 ghci 7.6.3,:}\n results in an error of "unknown command"

postgresql - haskell-postgres --> 连接参数不是查询

haskell - 将单子(monad)绑定(bind)到复合 Material 中(Haskell)

haskell - 如何在 GHCI 中中止执行?

haskell - 有效地将 ByteString 转换为十六进制表示

haskell - 更新 Data.ByteString 中的值

haskell - Supero(Haskell super 编译器)的用法?