You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell模块(如Prelude)默认源码路径及import默认搜索路径咨询

Haskell模块源码路径与import搜索路径解答

1. Haskell模块(如Prelude)的源码默认路径

Prelude属于base标准库的核心模块,它的源码路径会随GHC安装方式和操作系统有所差异,常见的默认位置如下:

  • Linux系统:通常在/usr/share/ghc-<GHC版本号>/libraries/base-<base库版本号>/src/目录下,比如GHC 9.2.5对应的路径可能是/usr/share/ghc-9.2.5/libraries/base-4.16.4.0/src/
  • macOS(Homebrew安装GHC):路径一般为/usr/local/Cellar/ghc/<GHC版本号>/lib/ghc-<GHC版本号>/base-<base库版本号>/src/
  • Windows系统:默认安装后通常在C:\Program Files\GHC\<GHC版本号>\libraries\base\<base库版本号>\src\

要是不想记这些固定路径,用GHC自带工具查询更靠谱:
运行以下命令:

ghc-pkg describe base | grep -A 10 "hs-source-dirs"

输出内容里就能找到base库的源码目录,Prelude的源码文件Prelude.hs就存放在这里。

2. Haskell的import默认搜索路径

想知道GHC默认去哪里查找要import的模块,可以用这几种方法:

  • 查看系统库根目录:运行ghc -print-libdir,输出的目录就是GHC存放标准库的根目录,子目录libraries里就是各类系统模块的位置。
  • 查看编译时的搜索路径:随便拿一个Haskell文件,用ghc -v <文件名>.hs编译,输出内容里会有一段looking for packages in ...的内容,这里列出来的就是GHC会遍历的搜索路径。
  • 在GHCi里查看当前路径:打开ghci后输入:show paths,就能看到当前会话中GHCi的模块搜索路径,默认会包含当前工作目录和系统库路径。
  • 自定义模块的搜索规则:自己写的模块放在当前工作目录时,GHC默认会自动搜索;如果模块在其他目录,可以用ghc -i<目录路径>指定额外搜索路径,或者在项目的.cabal文件里配置hs-source-dirs字段来设置。

内容的提问来源于stack exchange,提问作者Taha Magdy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 09:03:15