使用 GHC 编译 hs 文件时的 -i 选项是什么以及如何在 GHCi 中执行相同操作?

发布于 2024-11-17 00:16:36 字数 655 浏览 3 评论 0原文

好的,当我使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

“-i”标志没问题,问题在于加载模块。

在 ghci 中, :m 只会切换到预编译模块或在命令行上指定的模块。您需要使用 :add MyModule 告诉 ghci 编译 Haskell 源文件。

如果有,

./src/Module/SubModule.hs

可以使用以下命令加载它:

localuser$ ghci -isrc
GHCi, version 7.0.3: 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> :add Module.SubModule
[1 of 1] Compiling Module.SubModule        ( src/Module/SubModule.hs, interpreted )
Ok, modules loaded: Module.SubModule.
*Module.SubModule>

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

./src/Module/SubModule.hs

you can load it with the following:

localuser$ ghci -isrc
GHCi, version 7.0.3: 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> :add Module.SubModule
[1 of 1] Compiling Module.SubModule        ( src/Module/SubModule.hs, interpreted )
Ok, modules loaded: Module.SubModule.
*Module.SubModule>
伊面 2024-11-24 00:16:36

我想你可以说 :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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文