好的,当我使用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
选项用于指定接口文件的搜索路径。
答案 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
。