获取 :type-at 信息以获取 ghci 中一长串模块的信息

问题描述

我有兴趣在 GHCI 中获取 :type-at 命令的输出获取一长串模块。如果我手动执行 :type-at MyFile.hs M N M P,它工作正常;然而,对于这么多模块,我更希望有一种方法可以自动执行查找信息并将其存储到文件的过程。

有吗 a) 一种将 ghci 与输入文件一起使用的方法,该文件告诉它要处理的所有命令,或 b) 一种定义宏的方法,让我循环遍历值列表并将 :type-at 命令应用于所有这些值?

谢谢!

解决方法

是否有一种方法可以将 ghci 与输入文件一起使用,该文件告诉它要处理的所有命令

有。您可以按如下方式定义自定义 :source 命令:

> :def source readFile
> let x = length "hello"
> :source GHCiTest.txt
x :: Int
5
5
x :: Int        -- Defined at <interactive>:6:5
hello

在上面的示例中,GHCiTest.txt 包含以下 GHCi 命令,这些命令由 :source 一一运行:

:t x
print x
x
:i x
putStrLn "hello"

或者,您可以使用自定义 .ghci 文件启动 GHCi,该文件在启动时自动 :sourced。