Haskell环境下ghci加载自定义Figures.Point模块找不到报错求助
问题复现
相关代码
Circle.hs
module Figures.Circle ( Circle(..) , getArea , getPerimeter ) where import qualified Figures.Point as P
Point.hs
module Figures.Point ( Point(..) ) where
目录结构
- Figures/
- Point.hs
- Circle.hs
报错信息
Circle.hs:7:1: error: Could not find module `Figures.Point' Locations searched: Figures\Point.hs Figures\Point.lhs Figures\Point.hsig Figures\Point.lhsig | 7 | import qualified Figures.Point as P
解决方案
- 方法1:调整ghci启动目录
你大概率是在Figures目录内直接启动的ghci,此时ghci会在当前目录下搜索Figures/Point.hs,自然找不到对应文件。切换到Figures目录的上级目录启动ghci,加载模块时使用全路径:
输入命令:load Figures/Circle.hs即可正常加载。 - 方法2:启动时指定源根目录
如果你需要在Figures目录内操作,启动ghci时添加-i参数指定上级目录为源根目录即可:
输入命令ghci -i../,之后再加载Circle.hs就不会报找不到模块的错误。 - 方法3:配置项目构建文件(长期项目推荐)
如果是正式项目,建议创建cabal或stack配置文件,将Figures所在的上级目录添加到sourcedirs(cabal)或source-dirs(stack)字段中,后续无需手动指定目录即可正常识别模块路径。
内容的提问来源于stack exchange,提问作者Ernesto
相关产品推荐
相关产品推荐

