假设我有两个模块NecessaryModule1和NecessaryModule2(如后Haskell中所述:在当前目录路径中加载所有文件.然后我注意到在WinGHCi和GHCi中,如果我这样做:
> :load NecessaryModule1
[1 of 1] Compiling NecessaryModule1 ( NecessaryModule1.hs, interpreted )
Ok, modules loaded: NecessaryModule1.
> addNumber1 2 3
5
> :load NecessaryModule2
[1 of 1] Compiling NecessaryModule2 ( NecessaryModule2.hs, interpreted )
Ok, modules loaded: NecessaryModule2.
> addNumber1 2 3
<interactive>:1:1: Not in scope: `addNumber1'
Run Code Online (Sandbox Code Playgroud)
即加载NecessaryModule2消除了NecessaryModule1的所有功能.
那么这是否意味着我可以同时加载NecessaryModule1和NecessaryModule2的唯一方法是使用第三个文件(导入NecessaryModule1和NecessaryModule2)然后加载第三个文件?(例如,参见Haskell中的 test.hs :在当前目录路径中加载所有文件)谢谢.
[对geekosaur的反应]
嗨,所以如果我已经完成:load NecessaryModule1,然后我想在MyMod.hs中加载模块:
--MyMod.hs
module MyMod where
import Data.List
f x = sort x
Run Code Online (Sandbox Code Playgroud)
那怎么办呢?在Haskell中:WinGHCi中的卸载模块 Riccardo解释说:module假设模块已经加载.那么这是否意味着实现加载多个自定义模块的唯一方法是通过单次调用:load函数来加载它们?谢谢.
命令(在GHCi中)
:load abc
Run Code Online (Sandbox Code Playgroud)
加载文件abc中的函数(必须存在于当前目录路径中).如何加载当前目录路径中的所有文件?谢谢
[回复以下帖子]
嗨Rotskoff,谢谢我尝试了你的建议,但我无法让它工作,所以我想我一定是误解了一些东西.
我创建了3个文件test.hs,test1.hs和test2.hs,如下所示:
- >
--test.hs
import NecessaryModule
Run Code Online (Sandbox Code Playgroud)
- >
--test1.hs
module NecessaryModule where
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b
Run Code Online (Sandbox Code Playgroud)
- >
--test2.hs
module NecessaryModule where
addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b
Run Code Online (Sandbox Code Playgroud)
那时我做了:
:load test
Run Code Online (Sandbox Code Playgroud)
我收到了错误消息:
test.hs:1:8:
Could not find module `NecessaryModule':
Use -v to see a list of the files searched for.
Run Code Online (Sandbox Code Playgroud)
谢谢
谢谢.这就是我做的工作(按照Rotskoff的建议):
- …