Haskell: чтение нескольких аргументов командной строки - PullRequest
0 голосов
/ 19 марта 2010

Хорошо, я делаю программу на Haskell, которая должна изменять определенные слова на основе двух аргументов командной строки. Я сделал функцию замены, и все прекрасно работает, но я не могу заставить ее работать с аргументами командной строки.

Вот основной код: (функция замены не включена)

main = do 

text <- getContents

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

Так что для intstance в терминале я хочу иметь возможность напечатать что-то вроде: "---> cat textfile.txt | ./replace oldword newword"

Я знаю, что этот код близок, потому что я видел, как другие делают это таким образом. O_o

Спасибо за любую помощь

1 Ответ

10 голосов
/ 19 марта 2010

Вы должны действительно включить в свой вопрос, какую ошибку вы получаете или что не работает, как ожидалось. Просто сказать «я в замешательстве» не дает много подсказок, что идет не так.

Так что дикая догадка: вероятно, ваша replace функция принимает строки в качестве параметров. Поскольку getArgs уже возвращает аргументы в виде строк, нет необходимости вызывать read, что преобразовало бы эти строки в другой тип данных. Просто используйте аргументы напрямую:

main = do 
    text <- getContents

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