agarc
agarc

Reputation: 65

How do I read from a file and add the numbers in the text file in Haskell

I'm new to Haskell and IO is still a bit confusing. I have a txt file that I want to read, add the numbers in the text file, and then write it to a text file. the file looks like the following:

2
3

the numbers are separated by a new line character I know how to read a file contents then write it to another file but I don't know how I can manipulate it or if I have to cast the information to an 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

Thanks in advance.

Upvotes: 2

Views: 387

Answers (1)

jeiea
jeiea

Reputation: 2385

I can't sure your 'manipulate' means what, but I will assume you need integer calculation. It won't be difficult to manipulate as string.

If you hoogle the signature String -> Int you can find the 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

If you are using sufficiently recent version of ghc, you can use readMaybe which is desirable.

Upvotes: 3

Related Questions