haskell - :t in ghci access all that introspective information?是怎么回事

标签 haskell introspection typeclass ghci

内省(introspection)函数和数据类型等的类型类约束似乎是不可能的。但是,ghci 似乎可以做到这一点。

Prelude> :t show
show :: (Show a) => a -> String

所以......不知何故,它知道类型类约束,因为它正在打印出来。它是如何做到的?

最佳答案

信息保存在接口(interface)文件(module.hi)中。要从正在运行的程序中获取它,您需要找到并阅读 .hi文件(我相信 Hackage 上的 Hint 包就是这样做的);自从 ghci读取 .hi文件在编译为字节码的过程中,它可以方便地获得该信息。

您可以查看 .hi 中的内容带有 ghc --show-iface module.hi 的文件.

关于haskell - :t in ghci access all that introspective information?是怎么回事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5476788/

相关文章:

.net - 在 VB .NET 中在运行时构造动态属性

java - 如何获取给定方法的实现类?

haskell - 实例电感作为约束

haskell - 如何编写数据的 "Show"Typeclass

Haskell 函数签名混淆

haskell - 从文本输入更新记录

haskell - 是否可以在 Haskell 的 HXT 上使用 Text 或 ByteString?

haskell - mapM 如何与 Haskell 中的 const 函数一起工作?

arrays - 对 [Any] 数组进行排序

haskell - 为什么不能将 Int 与 Nums 或 Ords 进行比较?