Чтение файлов на Haskell и добавление чисел - PullRequest
2 голосов
/ 24 октября 2011

У меня есть программа, которая принимает текстовый файл со значениями, например:

20 30
23 5
200 3

И я преобразовываю его в список и добавляю каждую строку для создания промежуточной суммы, а затем сумму.

import System.IO  
import Control.Monad

f :: [String] -> [Int]
f = map read

subsum :: [Int] -> [Int]
subsum [] = []
subsum [x] = []
subsum (x:(y:xs)) = (x+y) : (subsum xs)

calc fromf = do  
        let list = []  
        let list2 = []
        handle <- openFile fromf ReadMode
        contents <- hGetContents handle
        let singlewords = words contents
            list = f singlewords
            list2 = subsum list
            result = sum list2
        print list2
        print result
        hClose handle  

Как бы я изменил этот код, чтобы получить текстовый файл с разными номерами, например:

10 9 29 40
1 34 2
1 2 55 89

Создайте список промежуточных итогов каждой строки, а затем итоги.

1 Ответ

2 голосов
/ 24 октября 2011

Как насчет

import System.IO
import Control.Monad

subtotals :: String -> [Int]
subtotals c = map sum (map (map readInt) (map words (lines c)))
    where
        readInt = read :: String -> Int

calc fname = do
    contents <- readFile fname
    print $ subtotals contents
    print $ sum (subtotals contents)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...