MacOS下编译运行Haskell diagrams程序遇GHC报错求助
解决Diagrams代码运行时GHC Panic的问题
问题根源
直接通过stack exec运行单Haskell文件时,Stack默认拉取的GHC版本可能与diagrams库依赖不兼容,引发编译器panic。用Stack项目管理依赖和版本是最可靠的解决方式。
步骤1:初始化Stack项目
进入project1文件夹,执行命令生成基础项目结构:
stack new . simple
该命令会在当前目录创建基于simple模板的Stack项目,自动生成必要的配置文件。
步骤2:配置依赖
打开生成的package.yaml文件,找到dependencies节点,添加以下依赖项:
dependencies: - base >= 4.7 && < 5 - diagrams - diagrams-svg - diagrams-lib
保存后,Stack会自动处理所有依赖的版本兼容问题。
步骤3:替换主程序代码
将diagram1.hs中的所有代码复制到项目的app/Main.hs文件,替换原有内容。
步骤4:构建并运行项目
先执行构建命令确保依赖安装完成:
stack build
构建成功后,运行程序并指定输出参数:
stack run -- -w 256 -h 256 -o diagram1.svg
执行完毕后,当前目录会生成目标diagram1.svg文件。
替代方案:指定Resolver版本(单文件模式)
若不想创建项目,可指定兼容的Stack Resolver版本(对应特定GHC版本)直接运行:
stack exec --resolver lts-20 --package diagrams -- runhaskell diagram1.hs -w 256 -h 256 -o diagram1.svg
LTS-20系列的GHC版本(9.2.x)与diagrams库兼容性较好,可避免多数版本冲突引发的panic。
内容的提问来源于stack exchange,提问作者R. Adams
相关产品推荐
相关产品推荐

