为什么GHCi有很多不同的命令用于将模块加载到会话中?
以下是我所知道的,以及他们:help在ghci中相当混乱的解释:
add [*]<mod> - 将模块添加到当前目标集:module [+/-] [*]<mod> - 设置表达式评估的上下文:load [*]<mod> - 加载模块及其家属:reload <mod> - 重新加载当前模块集.(注意::help并不是说这可以采用模块参数,但似乎可以.)import Mod他们各自做什么?星号如何改变它?为什么这么多?:(
GS *_*ica 12
这里有两个不同的概念:目标集和评估上下文.
你与设定的目标工作:add,:load而且:reload,你用的评价环境中工作:module和import.
目标集是ghci正在读取和编译的本地可用模块的列表.通常,您可以使用它来指定您正在处理的源.ghci将加载和编译这些模块及其所需的任何依赖项.
您可以使用:load将目标集重置为给定的模块集,并将:add给定模块添加到现有目标集.
如果你在目标集中指定模块,*那么它们将始终是"字节码解释" - 这意味着它们加载速度快但运行速度不如编译代码 - 否则ghci将使用编译的目标文件(如果可用)和字节码解释不.
:reload自己重新加载整个目标集和依赖项.我不太确定究竟做了什么:reload <mod>,但我认为它会重新加载<mod>和依赖,而其他部分则不受影响.
评估上下文控制提示符下的名称范围,并在此处完整记录.用于添加到评估上下文的模块可以是目标集合中的本地模块+依赖项,也可以是先前使用该ghc-pkg工具向ghc注册的"包"模块(或cabal最终调用的模块).import Foo只是另一种写作方式:module +Foo.
注意:这个答案混合了我对使用ghci的经验的直观理解,只是阅读文档并尝试将两者整合在我的脑海中.所以我可能没有100%准确!
| 归档时间: |
|
| 查看次数: |
1546 次 |
| 最近记录: |