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

如何使用cabal运行带自定义模块名的Haskell源文件

解决方案

有两种可以保留自定义模块名,同时正常用cabal运行单文件脚本的方式:

方式一:修改头部cabal配置块(推荐,一次修改永久生效)

将你头部的cabal注释块改成如下配置即可:

{- cabal:
executable skifree
  build-depends:  base
                , QuickCheck
                , checkers
  main-is: SkiFree.hs
  ghc-options: -main-is SkiFree
-}

说明:

  • 新增了显式的executable声明定义可执行程序
  • main-is后面填你的实际源文件名即可,如果你的文件名不是SkiFree.hs对应修改就行
  • 通过ghc-options给GHC编译器传参,指定程序入口为SkiFree模块,不需要修改你原有的module SkiFree where声明
  • 改完之后直接执行cabal run 你的文件名.hs就能正常运行

方式二:运行时手动传参数(无需修改文件)

如果不想改动现有文件内容,执行命令时额外传入编译参数即可:

cabal run --ghc-options="-main-is SkiFree" 你的文件名.hs

补充说明

你之前直接在全局cabal配置里加main-is不生效,是因为cabal单文件脚本的默认隐式配置只会把Main模块作为程序入口,必须显式通过-main-is参数告知编译器自定义的入口模块,才能识别对应模块下的main函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 04:06:04