使用 GHC 编译 hs 文件时的 -i 选项是什么以及如何在 GHCi 中执行相同操作?
好的,当我使用 GHC 编译时,我一直在使用 -i
编译选项来指定某个 haskell 源的文件夹。
ghc -threaded -i/d/haskell/src --make xxx.hs
我知道它在编译时使用这些文件作为“库”,但我可以在 GHCi 中做同样的事情吗?
我通常导入 haskell 预打包的 lib,例如 import Data.List
或 :m +Data.List
。
我尝试了 import /d/haskell/src - 不起作用!
编辑 来自 Haskell 文档: 第 2 章使用 GHCi 请注意,在 GHCi 和 ––make
模式下,-i
选项用于指定源文件的搜索路径,而在标准批处理编译模式下,-i
选项用于指定源文件的搜索路径。 >-i 选项用于指定接口文件的搜索路径。
Ok, I've been using the -i
compile option to specify the folder to some haskell source when I compile using GHC.
ghc -threaded -i/d/haskell/src --make xxx.hs
I understand it uses those files as 'libraries' while compiling but can i do same in GHCi?
I usually import haskell prepackaged lib e.g. import Data.List
or :m +Data.List
.
I tried import /d/haskell/src
-- does not work!
EDIT
From Haskell doc: Chapter 2 Using GHCi
Note that in GHCi, and ––make
mode, the -i
option is used to specify the search path for source files, whereas in standard batch-compilation mode the -i
option is used to specify the search path for interface files.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
“-i”标志没问题,问题在于加载模块。
在 ghci 中,
:m
只会切换到预编译模块或在命令行上指定的模块。您需要使用:add MyModule
告诉 ghci 编译 Haskell 源文件。如果有,
可以使用以下命令加载它:
The '-i' flag is fine, the problem is with loading the module.
Within ghci,
:m
will only switch to either pre-compiled modules, or modules which were specified on the command-line. You need to use:add MyModule
to tell ghci to compile a Haskell source file.If you have
you can load it with the following:
我想你可以说
:set -i /d/haskell/src
;许多(但不是全部)GHC 选项都可以这样设置。或者,您应该能够直接将其用作参数:ghci -i /d/haskell/src
。I think you can say
:set -i /d/haskell/src
; many, but not all, GHC options can be set that way. Alternatively, you should be able to use it as a parameter directly:ghci -i /d/haskell/src
.