内省(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/