Haskell中的一个编译程序中的多个参数
问题描述:
我有一个用haskell.it编写的全功能编辑程序替换了您用starts输入的所有单词。但是我遇到了命令行参数的问题。 如果您输入:Haskell中的一个编译程序中的多个参数
cat poem.txt |纂辑字词1字词2 WORD3
它只是重新编辑字1
,如果你写
猫一下poem.txt |纂辑“字词1字词2 WORD3”
它重新编辑的所有3个字......这可能是某种错误,我没有用命令行参数的...这里是我的代码
module Main where
import System
import Data.Char
import Data.Bits
convertWord :: Eq a=> [a] -> String
convertWord = map (const '*')
lowercase :: [Char]->[Char]
lowercase ch = map toLower ch
redact :: String -> String -> String
redact text keywords = unlines(map unwords redactedtext)
where redactedtext = map processed text1
text1 = map words (lines text)
processed = map tobeconverted
keywords1 = words keywords
tobeconverted x | lowercase x `elem` map lowercase keywords1 = convertWord x
| otherwise = x
main = do
text <- getContents
(key:_) <- getArgs
let
result = redact text key
putStr (result)
答
问题是这样的:
(key:_) <- getArgs
这里您明确地忽略了除第一个参数之外的所有内容。
如果编校功能将采取关键字的列表,你可以只通过参数的整个列表,你从getArgs得到:
keys <- getArgs
let result = redact text keys
注意,这样,你的编校功能实际上变得更容易一点,因为你不必分词。 此外,你整个程序变得更安全,因为当没有参数给出时它不会中止。
非常感谢你,这使得总体感......我改变了它,它工作正常。 – user1295012 2012-03-27 09:14:45
你应该标记为接受他的答案然后:) – 2012-03-27 09:32:18