【问题标题】:Haskell: reading multiple command line argumentsHaskell:读取多个命令行参数
【发布时间】:2010-05-10 06:18:36
【问题描述】:

好的,所以我正在用 Haskell 编写一个程序,它需要根据两个命令行参数更改某些单词。我已经做了替换功能,一切都很好,但我很难让它与命令行参数一起工作。

这里是主要代码:(不包括替换功能)

main = do 

text <- getContents

(command1:command2:_) <- getArgs
putStrLn (replace (read command1) (read command2) text)

因此,例如在终端中,我希望能够输入如下内容: "---> cat textfile.txt | ./replace oldword newword"

我知道这段代码很接近,因为我看到其他人这样做。 O_o

感谢您的帮助

【问题讨论】:

  • 到底是什么问题?您收到错误消息吗?
  • 可能是您忘记导入 System (getArgs)
  • 或者可能是您没有缩进 do 块中的行。缩进是强制性的。

标签: haskell command-line-arguments


【解决方案1】:

您确实应该在问题中包含您遇到的错误类型或未按预期工作的错误。只是说“我很难过”并不能说明问题出在哪里。

所以一个疯狂的猜测:可能你的replace 函数将字符串作为参数。由于getArgs 已经将参数作为字符串返回,因此无需调用read,这会将这些字符串转换为另一种数据类型。直接使用参数即可:

main = do 
    text <- getContents

    (command1:command2:_) <- getArgs
    putStrLn (replace command1 command2 text)

【讨论】:

  • 抱歉这个模棱两可的问题。 =P 这是我第一次发帖寻求源代码的帮助,Haskell 对我来说是如此陌生。这似乎奏效了。我知道机智会发生这样的小事。非常感谢您的帮助,我现在可以完成这个程序了。 =D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-16
  • 2011-07-06
  • 2012-01-26
  • 1970-01-01
  • 2013-05-27
  • 2023-04-01
相关资源
最近更新 更多