F #으로 데이터 처리를하고 있습니다. 먼저 모든 파일을 디렉토리에 넣은 다음 각 파일을 처리하여 일부 데이터 구조를 생성합니다. 마지막으로 처리 된 데이터를 SQLite에 저장합니다. Seq을 사용하여 파일 이름을 저장 한 다음 각 파일에 대해 지연 프로세스를 수행하는 Seq.map에 파이프 전달을하는 경우이를 알고 있습니다. 그러나 메모리에있는 모든 파일을 포함하는 파일이 얼마나 많은지는 불가능합니다. 그런 다음 명령형 프로그래밍 언어로 하나의 파일을 읽고 처리 한 다음 저장하고 중간 미디어 데이터를 릴리스하고 다음 파일을 수행 할 수있었습니다. 물론 F #이 명령형 프로그래밍을 할 수는 있지만 Functional programming 스타일로 할 수있는 기회가 있는지 알고 싶습니다.처리 된 데이터를 순서대로 해제하십시오.
files
|> Seq.map readFile
|> Seq.map processContent
|> Seq.map storeProcessResult
위 코드는 내 의견을 나타냅니다. files
에는 일련의 파일 이름이 들어 있습니다. 그런 다음 파일 내용을 읽고 구조로 처리 한 다음 결과를 데이터베이스에 저장합니다. 나는 게으른 행동 때문에 파일이 하나씩 읽혀지고 처리된다는 것을 안다. 그러나 언제 최종 데이터가 공개됩니까?
오류가 있습니까? 재귀를 사용하여이를 처리 할 수 있습니다. 아니면 고차 함수를 사용하고'use'로 파일을 열면됩니다. 데이터베이스에서 10GB를 채울 데이터를 쉽게 처리 할 수 있습니다. – s952163
그럼 Seq이 당신을 위해 일하지 않는 이유는 무엇입니까? 'Seq.map' 연산이 파일을 읽었을 때 내용이'Seq.fold'에 의해 처리되면, 한 번에 하나의 파일 만 메모리에 유지합니다. – FuleSnabel
@FuleSnabel Seq에서 모든 처리 된 데이터가 공개된다는 것을 의미합니까? – holmescn