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 (참고 자료)