使用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
相关产品推荐
相关产品推荐

