文件处理-Haskell
Posted
技术标签:
【中文标题】文件处理-Haskell【英文标题】:File processing-Haskell 【发布时间】:2012-06-09 14:57:55 【问题描述】:如何在 haskell 中实现以下功能:
-
我从命令行收到一个输入文件。此输入文件包含用制表符、换行符和空格分隔的单词。
我必须用逗号替换这些元素(制表符、换行符和空格)。
然后将结果写入一个名为
output.txt
的文件。
非常感谢任何帮助。我的 haskell 技能仍在发展中。
到目前为止,我已经得到了这个代码:
processFile::String->String
processFile [] =[]
processFile input =input
process :: String -> IO String
process fileName = do
text <- readFile fileName
return (processFile text)
main :: IO ()
main = do
n <- process "input.txt"
print n
在 processFile 函数中,我应该处理输入文件中的文本。
【问题讨论】:
这是作业吗?你试过什么? 是的,这是家庭作业。我没有尝试太多,因为我在 Haskell 实施方面没有太多想法。 【参考方案1】:您可以使用getArgs
函数在命令行上读取参数。例如:
import System.Environment (getArgs)
main = do
args <- getArgs
case args of
[arg] -> putStrLn $ "You gave me one arg: " ++ arg
_ -> putStrLn $ "You gave me " ++ show (length args) ++ " arguments."
您可以使用readFile
函数读取文件。
contents <- readFile "test.txt"
putStrLn contents -- Prints the contents of the file
你可以使用writeFile
函数写一个文件:
writeFile "test2.txt" "Some file data\n" -- Writes the data to the file
制表符、换行符和空格可以称为空格或单词分隔符。 words
函数将字符串转换为单词列表。
print $ words "some text with\nmany words"
-- prints ["some", "text", "with", "many", "words"]
intersperse
函数在列表的每个元素之间插入一个分隔符:
import Data.List (intersperse)
main =
print $ intersperse '.' ["some", "text", "with", "many", "words"]
-- prints "some.text.with.many.words"
如果您需要更长的分隔符,也可以查看intercalate
函数。
这些是您的程序所需的所有工具,我认为您可以弄清楚其余的。祝你好运!
【讨论】:
以上是关于文件处理-Haskell的主要内容,如果未能解决你的问题,请参考以下文章