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

Haskell neural库安装及示例运行失败问题求助

解决Haskell neural库及相关库的安装运行问题

问题背景

我想安装并运行Haskell的neural库示例程序,但作为新手搞不清问题出在安装方法、环境还是库本身。尝试stack install neural时,Stack提示无法构建计划,缺少pipes-zlib依赖,按提示添加extra-deps后仍构建失败;改用cabal install neural时,出现重复实例声明错误;安装grenade等相关库也遇到依赖冲突,求指导如何运行示例程序。


场景1:Stack安装neural的依赖缺失与构建失败

错误信息

Error: [S-4804]
Stack failed to construct a build plan.

构建计划时,Stack遇到以下错误。"Stack配置"指快照指定的包版本集合(包含移除的包或修剪后的GHC引导包;若替换引导包,Stack会修剪所有依赖它的其他此类包),以及所有额外依赖:

   在neural-0.3.0.1的依赖中:
     * 需要pipes-zlib,但Stack配置中无匹配版本(最新兼容版本为0.4.4.2)。
   因neural是构建目标,所以需要该依赖。

   可尝试以下解决方法:

     * 推荐操作:将以下内容添加到C:\Users\DELL\AppData\Roaming\stack\global-project\stack.yaml的extra-deps中(项目级配置):

       - pipes-zlib-0.4.4.2@sha256:eabd5aa29a030ecdeade80cfeb1787adc181bcf8fd378cb7b695b2af6cb26af6,1947

添加extra-deps后仍报错:

执行构建计划时,Stack遇到错误:

[S-7011]
   使用以下命令构建neural-0.3.0.1包时出错(可向上滚动查看对应错误信息):
   C:\Users\DELL\AppData\Roaming\stack\setup-exe-cache\x86_64-windows\Cabal-simple_9p6GVs8J_3.10.1.0_ghc-9.6.4.exe --verbose=1 --builddir=.stack-work\dist\ab060f89 build --ghc-options " -fdiagnostics-color=always"
   进程退出码:ExitFailure 1

解决方法

  • neural-0.3.0.1是旧版本,与GHC 9.6.4这类新版编译器兼容性差,优先选择匹配的旧版GHC快照:
    1. 新建本地项目目录,进入后运行:
      stack init --resolver lts-18.28
      
      (该快照对应GHC 8.10.7,与neural-0.3.0.1的依赖完全兼容)
    2. 打开项目根目录的stack.yaml,添加指定的extra-deps:
      extra-deps:
        - pipes-zlib-0.4.4.2@sha256:eabd5aa29a030ecdeade80cfeb1787adc181bcf8fd378cb7b695b2af6cb26af6,1947
      
    3. 执行构建命令:
      stack build neural
      
    4. 运行示例程序(以sqrt示例为例):
      stack exec sqrt
      

场景2:Cabal安装neural的重复实例声明错误

错误信息

构建neural-0.3.0.1失败。
构建日志路径:
C:\cabal\logs\ghc-9.4.8\neural-0.3.0.1-41d9f5ecd7dfa38845ecaf8f9f447447e7958da2.log

预处理neural-0.3.0.1库..
构建neural-0.3.0.1库..
[ 1 of 22] 编译Data.MyPrelude ( src\Data\MyPrelude.hs, dist\build\Data\MyPrelude.o )

src\Data\MyPrelude.hs:55:1: 警告:[-Wunused-imports]
Data.Monoid的导入是冗余的
除非只是为了导入Data.Monoid中的实例
若仅导入实例,使用:import Data.Monoid()
|
55 | import Data.Monoid ((<>))
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[ 2 of 22] 编译Data.FixedSize.Class ( src\Data\FixedSize\Class.hs, dist\build\Data\FixedSize\Class.o )

.........
|
120 | vtail (Vector v) = Vector $ VS.tail v
| ^
[17 of 22] 编译Numeric.Neural.Model ( src\Numeric\Neural\Model.hs, dist\build\Numeric\Neural\Model.o )

src\Numeric\Neural\Model.hs:139:10: 错误:
重复实例声明:
instance (NFData (s a), NFData (t a)) => NFData (Product s t a)
-- 定义于src\Numeric\Neural\Model.hs:139:10
instance [safe] (Control.DeepSeq.NFData1 f,
Control.DeepSeq.NFData1 g, NFData a) =>
NFData (Product f g a)
-- 定义于Control.DeepSeq
|
139 | instance (NFData (s a), NFData (t a)) => NFData (Product s t a) where
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Error: cabal-3.10.2.1.exe: 构建neural-0.3.0.1失败(neural-0.3.0.1的exe:sqrt、exe:sin等目标依赖此包)。详情见上方构建日志。

解决方法

  • 错误根源是新版deepseq库已为Product类型提供了NFData实例,而旧版neural重复声明导致冲突,解决步骤:
    1. 新建Cabal项目:
      cabal init --non-interactive
      
    2. 在项目根目录创建cabal.project文件,添加版本约束:
      constraints: deepseq < 1.4.5.0
      
      (deepseq从1.4.5.0版本开始新增了Product的NFData实例,约束低于该版本即可避免冲突)
    3. 执行安装命令:
      cabal install neural
      

场景3:安装Grenade的依赖冲突

错误信息

失败(回溯法,冲突集合:singletons, template-haskell, th-desugar)
遍历整个依赖树后,最难满足的目标是:grenade, text, singletons, template-haskell, th-desugar, base

解决方法

  • Grenade的依赖冲突多因新版GHC与singletons、th-desugar等依赖包版本不匹配,解决步骤:
    1. 选择与Grenade版本兼容的Stack快照,例如Grenade稳定版支持GHC 9.2.x,执行:
      stack init --resolver lts-20.25
      
      (该快照对应GHC 9.2.8,与Grenade的依赖兼容)
    2. 执行构建命令:
      stack build grenade
      
    3. 若仍有冲突,在stack.yaml的extra-deps中添加冲突包的兼容版本,例如根据错误提示指定singletons和th-desugar的具体版本。

总结

新手遇到这类Haskell库依赖问题,核心原因大多是旧库与新版GHC/依赖包不兼容。优先选择和目标库版本匹配的旧版GHC快照(Stack的LTS快照),尽量使用本地项目而非全局安装,避免污染全局环境。

内容的提问来源于stack exchange,提问作者college-account

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 03:22:04