2017-01-26 13 views
2

Ich bin neu in Haskell und IO ist immer noch ein bisschen verwirrend. Ich habe eine TXT-Datei, die ich lesen möchte, füge die Zahlen in die Textdatei ein und schreibe sie in eine Textdatei. die Datei sieht wie folgt aus:Wie lese ich aus einer Datei und füge die Zahlen in die Textdatei in Haskell ein

2 
3 

die Zahlen durch eine neue Zeile Zeichen getrennt sind Ich weiß, wie ein Dateiinhalte zu lesen, dann auf eine andere Datei schreiben, aber ich weiß nicht, wie ich es manipulieren kann, oder wenn Ich muss die Informationen an einen Int übertragen?

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 

Vielen Dank im Voraus.

Antwort

3

Ich kann nicht sicher, dass Ihre "manipulieren" bedeutet was, aber ich nehme an, dass Sie Ganzzahl Berechnung benötigen. Es wird nicht schwierig sein, als String zu manipulieren.

Wenn Sie hoogle die Signatur String -> Int können Sie die read finden.

-- | 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 

Wenn Sie ausreichend aktuelle Version von ghc verwenden, können Sie readMaybe verwenden, was wünschenswert ist.

+0

danke viel jejea! – agarc

Verwandte Themen