2010-03-19 92 views
-1

好吧,所以我正在Haskell中制作一个程序,它需要根据两个命令行参数更改某些单词。我已经完成了替换功能,并且一切都很好,但是我很难让它与命令行参数一起工作。Haskell:阅读多个命令行参数

下面是主要代码:(替换功能不含税)

main = do 

text <- getContents 

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

所以在终端intstance我希望能够键入类似: “--->猫TextFile.txt的| ./replace oldword newword“

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

感谢所有帮助

+3

究竟是什么问题?你有错误信息吗? – 2010-03-19 12:08:59

+1

这可能是因为您忘记导入System(getArgs) – luqui 2010-03-19 13:31:24

+4

或者可能是因为您没有缩进do块中的行。缩进是强制性的。 – luqui 2010-03-19 13:31:43

回答

10

你真的应该包括在你的问题是什么样的错误你正在或预期什么行不通。只是说“我很难过”并不能给出太多提示。

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

main = do 
    text <- getContents 

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

抱歉,这个模糊的问题。 = P这是我第一次发布有关源代码的帮助,Haskell对我来说非常陌生。 这似乎工作。我知道智慧会是这样的小事。 非常感谢您的帮助,我现在可以完成此计划。 = d – Survot 2010-03-19 17:52:35