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

Haskell中array包已暴露但GHC编译仍提示隐藏的问题问询

问题原因与解决方案

核心原因

GHC 9.0及以上版本对默认依赖包集合做了精简:

  • 旧版GHC(8.x及更早)默认会自动包含array、bytestring等常用非核心包到编译依赖中
  • 从GHC 9.0开始,默认仅链接最基础的核心包(如base、ghc-prim等),array这类包被移出了默认依赖集合
  • ghc-pkg describe array显示exposed: True仅表示该包在包数据库中是可被引用的,但GHC不会自动将所有exposed包纳入编译依赖,必须显式指定

直接使用GHC的解决方案

1. 全局持久化配置

在用户目录下创建或编辑GHC全局配置文件~/.ghc/ghc.conf,添加以下内容:

-package array

之后所有通过GHC编译的代码都会自动包含array包依赖,无需手动加参数。

2. 单项目配置

在项目根目录创建.ghc-options文件,写入:

-package array

GHC编译该项目下的代码时会自动读取这个文件的配置。

3. 临时单次编译(补充说明)

每次编译时显式指定包参数:

ghc -O2 sudoku1.hs -rtsopts -package array

适合临时测试或单文件编译场景。

额外方案(利用已安装的Cabal)

如果不想手动管理GHC参数,可初始化一个简易Cabal项目:

  1. 在项目目录执行cabal init,按提示完成初始化(选择"executable"类型)
  2. 在生成的.cabal文件的build-depends字段中添加array,例如:
    build-depends:       base ^>=4.17.2.1, array ^>=0.5.4.0
    
  3. 用cabal build编译项目,Cabal会自动处理所有依赖,无需手动给GHC传参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 22:33:10