haskell - 打印类型签名列表

标签 haskell types

我希望能够在 ghci 中输入以下内容:

map showTypeSignature [(+),(-),show]

我希望 ghci 返回以下字符串列表:
["(+) :: Num a => a -> a -> a","(-) :: Num a => a -> a -> a","show :: Show a => a -> String"]

自然,我遇到的第一个问题是我无法构造第一个列表,因为函数的类型签名不匹配。我能做些什么来构建这样一个列表? ghci如何完成类型签名的打印? ghci 命令 :t 定义在哪里(它的来源)?

最佳答案

你所要求的实际上是不可能的。您无法从 Haskell 中轻松确定 Haskell 术语的类型签名。在运行时,几乎没有可用的类型信息。 GHCi 命令 :t是一个 GHCi 命令,而不是解释的 Haskell 函数,这是有原因的。

要做一些接近你想要的事情,你必须使用 GHC 本身,作为一个库。 GHC 为此提供了 GHC API。但是你将不能使用任意的 Haskell 术语,而必须以 String 开头。代表您的条款。此外,在运行时调用编译器必然会产生 IO输出。

关于haskell - 打印类型签名列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22344158/

相关文章:

Haskell 将 putStr 和 putStrLn 放在程序末尾而不是在执行期间

haskell - 没有 (RealFloat (Ratio Integer)) 实例

haskell - "data"和 "type"关键字有什么区别?

python - 检查参数是否是 Python 模块?

haskell - 类型推导在 Haskell 中是如何工作的?

c: printf ("%-16llu", my_var);

haskell - 常量超出范围但定义明确(或者我相信)

haskell - 我如何强制 Parsec 返回错误?

python - 如何在Python中从混合txt文件中读取数字

delphi - 如何将 int 转换为货币?