安装的模块
您必须使用 ghci 的命令才能加载(:module +My.Module
)并卸载(:module -My.Module
)安装的模块。您还可以使用:m
代替:module
为了少写一点,像这样:
Prelude> :m +Data.List
Prelude Data.List> sort [3,1,2]
[1,2,3]
Prelude Data.List> :m -Data.List
Prelude> sort [3,1,2]
<interactive>:1:1: Not in scope: `sort'
请记住,ghci 提示符始终会提醒您当前导入的模块:您可以查看该提示以了解要卸载的内容:m -Module.To.Unload
.
具体文件
如果您尝试加载的模块未安装在系统中(例如,您编写了源代码并将文件保存在某处),则需要使用不同的命令,:load filename.hs
。更快的方法是将文件的路径直接作为命令行参数传递给ghci
, e.g ghci filename.hs
。如果你跑winghci
并且您将其关联到.hs
扩展名,只需双击该文件即可。
在这两种情况下,您都会收到 ghci 提示,其中指定的模块已正确加载并导入到范围内(前提是您没有出现编译错误)。和以前一样,您现在可以使用:m [+/-] My.Module
加载和卸载模块,但请注意,这与:load
因为:module
假设你已经:load
编辑您想要进入/超出范围的内容。
例如,如果你有test.hs
module MyModule where
import Data.List
f x = sort x
您可以通过双击它来加载它(在带有 winghci 的 Windows 上),输入ghci test.hs
在控制台中,或通过加载ghci
并打字:load test.hs
(注意相对/绝对路径)。
另一个有用的 ghci 命令是:reload
,这将重新编译您之前加载的模块。当您更改源文件并且想要快速更新 ghci 中加载的模块时使用它。
Prelude> :load test.hs
[1 of 1] Compiling MyModule ( test.hs, interpreted )
Ok, modules loaded: MyModule.
*MyModule> let xs = [1,2,3] in sort xs == f xs
True
*MyModule> :reload
Ok, modules loaded: MyModule.
:help
将为您提供所有可用命令的完整列表。