如何从文件中读取并在Haskell中的文本文件中添加数字

时间:2017-01-26 03:02:57

标签: haskell

我是Haskell的新手,IO仍然有点令人困惑。我有一个我想读的txt文件,在文本文件中添加数字,然后将其写入文本文件。该文件如下所示:

2
3

数字由新行字符分隔我知道如何读取文件内容然后将其写入另一个文件但我不知道如何操作它或者我是否必须将信息转换为Int ?

module Main where

import System.Environment

-- | this fuction read first line in a file and write out to src file
-- src "src.txt", des "des.txt"
copyFirstLine :: FilePath -- ^ path to input file
              -> FilePath -- ^ path to output file
              -> IO ()
copyFirstLine src dst = do
contect <- readFile src 
let (fst :rest) = (lines contect)
writeFile dst fst

main = do
[src,dst] <- getArgs 
copyFirstLine src dst

提前致谢。

1 个答案:

答案 0 :(得分:3)

我不能确定你的'操纵'意味着什么,但我会假设你需要整数计算。操作字符串并不困难。

如果您hoogle签名String -> Int,则可以找到read

-- | this fuction read first line in a file and write out +1 result
--   to src file src "src.txt", des "des.txt"
eachPlusOne :: FilePath -- ^ path to input file
            -> FilePath -- ^ path to output file
            -> IO ()
eachPlusOne src dst = do
  contect <- readFile src
  let lns = lines contect :: [String]
      ints = map ((1+) . read) lns :: [Int]
      outs = unlines . map show $ ints :: String
  writeFile dst outs

如果您使用的是最新版本的ghc,则可以使用readMaybe,这是理想的。