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

使用cabal run向Haskell程序传递参数失败的问题求助

解决Cabal传递程序参数失败的问题

问题根源

Cabal 把你--后的第一个参数Oren误认为是要运行的包/可执行文件名称,而不是程序的命令行参数。这种情况通常发生在项目未明确指定默认可执行目标,或者Cabal无法自动识别唯一可执行文件时。

解决方法

方法1:明确指定可执行文件名称

打开项目的.cabal配置文件,找到executable字段的名称,比如配置里的定义可能是这样:

executable your-program-name
  main-is:             Main.hs
  -- 其他编译配置...

这里的your-program-name就是可执行文件的标识,运行时先指定它,再用--分隔传递参数:

cabal run your-program-name -- Oren 13 10

方法2:用.指代当前包的默认可执行文件

如果项目只有一个可执行目标,也可以用.简化命令,让Cabal直接识别当前包的默认可执行文件:

cabal run . -- Oren 13 10

额外提醒

你的代码里注释掉了获取参数的逻辑,即便参数传递成功,程序也不会处理这些参数。需要取消注释并调整逻辑,比如:

module Main where
import System.Environment ( getArgs )
main :: IO ()
main = do
   args <- getArgs
   print $ "Received args: " ++ show args
   -- 或者按你的需求解构参数:(input:_:_) <- getArgs
   print "Hello Oren"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 15:38:13