我加载了两个模块(NecessaryModule1.hs 和 NecessaryModule2.hs 在Haskell 中外联:在当前目录路径中加载所有文件)。现在我想卸载 NecessaryModule2.hs。我在System.Plugins.Load中找到了一个“卸载”功能,但它在 WinGHCi 中不起作用。我得到的错误信息是:
>unload NecessaryModule2
<interactive>:1:1: Not in scope: `unload'
<interactive>:1:8:
Not in scope: data constructor `NecessaryModule2'
我试过
import System.Plugins.Load
但这没有用。有没有办法以上述方式卸载模块?
-------------------------------------------------- -------------------------------------
[对里卡多的回应]
嗨,Riccardo,我尝试了你的建议,但我无法让它在 WinGHCi 中工作。我有一个文件 NecessaryModule1.hs 如下:
module NecessaryModule1 where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
我通过 ':cd' 命令找到了文件所在的位置,然后:
> :module +NecessaryModule1
<no location info>:
Could not find module `NecessaryModule1':
it is not a module in the current program, or in any known package.
它是否正确?谢谢[编辑:见下文更正]
-------------------------------------------------- -------------------------------------
[以上更正]
只是为了解释为什么上面是不正确的(正如 Riccardo 所解释的那样),需要做的是以下几点:
如果我们有一个文件 NecessaryModule1.hs 如下:
--NecessaryModule1.hs
module NecessaryModule1 where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
然后我们做:
> :load NecessaryModule1
[1 of 1] Compiling NecessaryModule1 ( NecessaryModule1.hs, interpreted )
Ok, modules loaded: NecessaryModule1.
> addNumber1 4 5
9
> :module -NecessaryModule1
> addNumber1 4 5
<interactive>:1:1: Not in scope: `addNumber1'