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

时间:2011-06-24 09:59:22

标签: haskell ghc 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 doc:Chapter 2 Using GHCi 请注意,在GHCi和––make模式下,-i选项用于指定源文件的搜索路径,而在标准批处理编译模式下,-i选项用于指定接口文件的搜索路径。

2 个答案:

答案 0 :(得分: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>

答案 1 :(得分:0)

我想你可以说:set -i /d/haskell/src;许多(但不是全部)GHC选项可以这样设置。或者,您应该可以直接将其用作参数:ghci -i /d/haskell/src