1

如何在haskell中实现以下内容:

  1. 我从命令行收到一个输入文件。此输入文件包含用制表符、换行符和空格分隔的单词。
  2. 我必须用逗号替换这些元素(制表符、换行符和空格)。
  3. 然后将结果写入一个名为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 函数中,我应该处理输入文件中的文本。

4

1 回答 1

8

您可以使用该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如果您需要更长的分隔符,您也可以查看该功能。


这些是您的程序所需的所有工具,我认为您可以弄清楚其余的。祝你好运!

于 2012-06-09T15:32:42.810 回答