5

命令(在 GHCi 中)

:load abc

加载文件 abc 中的函数(必须存在于当前目录路径中)。如何加载当前目录路径中的所有文件?谢谢

-------------------------------------------------- --------------------------------

[回复下面的帖子]

嗨 Rotskoff,谢谢我尝试了你的建议,但我无法让它发挥作用,所以我想我一定误解了一些东西。

我创建了 3 个文件 test.hs、test1.hs 和 test2.hs,如下所示:

->

--test.hs
import NecessaryModule

->

--test1.hs
module NecessaryModule where

addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

->

--test2.hs
module NecessaryModule where

addNumber2 :: Int -> Int -> Int
addNumber2 a b = a + b

然后当我这样做时:

:load test

我收到错误消息:

test.hs:1:8:
    Could not find module `NecessaryModule':
      Use -v to see a list of the files searched for.

谢谢

-------------------------------------------------- -------------------------------------------

谢谢。这就是我为使其正常工作所做的(遵循 Rotskoff 的建议):

->

--test.hs
import NecessaryModule1
import NecessaryModule2

->

--NecessaryModule1.hs
addNumber1 :: Int -> Int -> Int
addNumber1 a b = a + b

->

--NecessaryModule2.hs
addNumber2 :: Int -> Int -> Int 
addNumber2 a b = a + b
4

2 回答 2

5

大概您的意思是 Haskell 源文件,因为您不能将:loadGHCi 中的命令用于其他任何内容。

在您加载的源文件的顶部,包括以下行:

import NecessaryModule

对于每个源文件,确保命名模块,例如,

module NecessaryModule where

应该出现。GHCi 将自动链接所有文件。

如果您尝试导入数据,请查看System.Directory文档。

于 2012-04-22T16:03:14.257 回答
2

如果文件名和模块的名称相同,则更好:

➤ mv test1.hs NecessaryModule.hs
➤ ghci
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
Prelude> :load test
[1 of 2] Compiling NecessaryModule  ( NecessaryModule.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: NecessaryModule, Main.

因为:load命令加载模块(按文件名)及其依赖项(您可以通过键入:help:?在 GHCi 提示符中读取)。

:load命令还删除了当前 GHCi 会话中定义的所有先前声明,因此要加载当前目录中的所有文件,您可以执行以下操作:

Prelude> :q
Leaving GHCi.
➤ ghci *.hs
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.

<no location info>:
    module `main:NecessaryModule' is defined in multiple files: NecessaryModule.hs
                                                            test2.hs
Failed, modules loaded: none.
Prelude> :q
Leaving GHCi.
➤ rm test2.hs
➤ ghci *.hs  
GHCi, version 7.0.4: http://www.haskell.org/ghc/  :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
Loading package ffi-1.0 ... linking ... done.
[1 of 2] Compiling NecessaryModule  ( NecessaryModule.hs, interpreted )
[2 of 2] Compiling Main             ( test.hs, interpreted )
Ok, modules loaded: NecessaryModule, Main.
*NecessaryModule> 
于 2012-04-23T21:19:08.433 回答