나는 꽤 haskell입니다. 나는 할 수있는 데이터를 가지고 있고 나는 haskell에서 그것을 할 것이라고 생각했다. 본질적으로 여러 파일의 내용을 가져 와서 변환하고 하나의 파일에 새 출력을 저장합니다. 각 파일은 숫자 목록으로 변환됩니다. 그런 다음 출력을 저장하기 전에 목록을 조 변경해야합니다. 예상대로여러 파일에서 데이터로드 및 변환
main = do
allFiles <- getDirectoryContents inputDir
contents <- readFile (validFiles allFiles !! 1)
let activeCompanies = getMonthRow contents
print $ activeCompanies
getMonthRow :: String -> [String]
-- returns the needed data from the file
validFiles :: [String] -> [String]
-- removes invalid files from the list of filenames
이 작동하고, activeCompanies
숫자의 목록을 포함합니다 : 나는 다음 있습니다. 증거로서 나는 validFiles
에서 첫 번째 파일 만 가져옵니다. 내가하고 싶은 것은 모든 파일의 데이터를 읽고 하나의 큰 목록에 저장하는 것입니다. 그것은 그 이유는 내가 출력 파일에 (즉, 여러 입력 파일, 하나의 출력 파일)을 모두 저장하기 전에 데이터를 트랜스 필요가있다이
[["1","2","3"],["2","3","4"],["4","5","6"]]
where each sublist is the `activeCompanies` list I retrieved from one file
같은 수 있습니다.
어떻게하면됩니까? 한 가지 생각은 각 파일에 대해 행 당 하나의 요소로 출력 파일에 목록을 쓰고 입력 파일을 읽으면 출력 파일의 각 행을 업데이트 할 수 있다는 것입니다. 그러나, 나는이 시점에서 모든 귀입니다.
마지막 행은 'print $ transpose $ map getMonthRow contents'이어야하지만 그 외는 훌륭하게 작동했습니다. – Gevious
* 모든 파일을 읽지 않습니다. 'readFile'은 게으른 입력입니다. 'getMonthRow'도 충분히 게으른 경우, 열린 파일 기술자를 다 사용하지 않는 한 출력을 쓰는 동안 모든 파일을 동시에 스트리밍 할 수 있어야합니다. 아마 당신이 원하는 것입니다. –