Haskell:
텍스트 파일 읽기
How to: (방법:)
import System.IO
-- 파일 읽기: 단순 예제
simpleRead :: FilePath -> IO String
simpleRead filePath = do
contents <- readFile filePath
return contents
-- 콘텐츠 출력
main :: IO ()
main = do
contents <- simpleRead "sample.txt"
putStrLn contents
실행 시 샘플 출력:
Hello, Haskell!
Deep Dive (깊이 있게 알아보기)
텍스트 파일을 읽는 것은 프로그램의 기본 과정 중 하나입니다. Haskell에서는 readFile
이라는 함수를 사용합니다. 이 함수는 IO
모나드에 래핑된 String
을 반환하여, 순수한 함수 내에서의 변형 없이 파일의 내용을 처리할 수 있도록 합니다.
역사적으로, 파일 입출력은 I/O 장치와의 비동기적 상호 작용과 관련 있습니다. Haskell은 이러한 상호 작용을 모나드로 추상화하여 부작용을 관리합니다.
readFile
외에도 Data.ByteString
라이브러리를 사용하여 더 큰 파일을 효율적으로 다룰 수 있는 방법이 있습니다. 또한, text
패키지의 Data.Text.IO
모듈도 있어서 유니코드 텍스트 처리 시 유용합니다.
구현 세부 사항으로, readFile
은 게으른 I/O를 사용합니다. 즉, 필요에 따라 파일의 내용을 조금씩 메모리로 읽어 들입니다. 하지만 이는 파일이 너무 크거나, 즉시 모든 데이터가 필요한 상황에서는 곤란할 수 있습니다. 이럴 때는 strict
버전을 사용하거나, 스트림 기반 라이브러리인 conduit
또는 pipes
를 고려해볼 수 있습니다.
See Also (참고 자료)
- Haskell.org: Haskell 언어 공식 사이트.
- Hackage: ByteString:
Data.ByteString
의 문서. - Hackage: Text:
Data.Text
의 문서. - Learn You a Haskell for Great Good!: Haskell 학습을 위한 무료 온라인 책.
- School of Haskell: 다양한 Haskell 주제에 대한 상세한 튜토리얼.