Haskell/ghci模块搜索路径配置及同目录模块导入问题解决
别担心,我帮你搞定这个Haskell模块导入的问题!你遇到的核心问题是GHCi在单独加载MyApp.hs时,不会自动去查找同一目录下的依赖模块文件,所以才会报找不到Csvparser的错误。这里有几个简单的解决办法:
方法1:同时加载所有相关文件
直接在GHCi里一次性指定两个文件的路径,让GHCi同时编译它们:
:load C:\Test\Haskell\MyApp.hs C:\Test\Haskell\Csvparser.hs
如果已经用:cd C:\Test\Haskell切换到了文件所在的目录,直接用文件名更省事:
:load MyApp.hs Csvparser.hs
这样GHCi就能识别到Csvparser模块,顺利完成导入。
方法2:给GHCi添加模块搜索路径
先告诉GHCi去哪里找你的模块文件,再加载主应用:
- 首先设置搜索路径:
:set -iC:\Test\Haskell
- 然后加载
MyApp.hs:
:load MyApp.hs
这时候GHCi就会自动在你指定的目录里寻找Csvparser.hs了。
额外要注意的小细节
- 大小写匹配:Haskell的模块名是大小写敏感的!比如如果你的文件是
CsvParser.hs(中间的P大写),那导入语句必须写import CsvParser,哪怕Windows系统不区分文件名大小写,GHC也会严格检查这一点。 - 路径和文件名拼写:再确认下两个文件确实在同一个目录,文件名也没有拼写错误(比如少打了字母、大小写写错)。
内容的提问来源于stack exchange,提问作者sandwood
相关产品推荐
相关产品推荐

