수색…


IO 스트리밍

io-streams 은 스트림 추상화에 초점을 맞추지 만 IO에 초점을 맞춘 스트림 기반 라이브러리입니다. 그것은 두 가지 유형을 노출합니다 :

  • InputStream : 읽기 전용 스마트 핸들

  • OutputStream : 쓰기 전용 스마트 핸들

우리는 makeInputStream :: IO (Maybe a) -> IO (InputStream a) 로 스트림을 생성 할 수 있습니다. 스트림에서 읽기는 read :: InputStream a -> IO (Maybe a) 사용하여 수행됩니다. 여기서 Nothing 은 EOF를 나타냅니다.

import Control.Monad (forever)
import qualified System.IO.Streams as S
import System.Random (randomRIO)

main :: IO ()
main = do
  is <- S.makeInputStream $ randomInt  -- create an InputStream
  forever $ printStream =<< S.read is  -- forever read from that stream
  return ()

randomInt :: IO (Maybe Int)
randomInt = do
  r <- randomRIO (1, 100)
  return $ Just r

printStream :: Maybe Int -> IO ()
printStream Nothing  = print "Nada!"
printStream (Just a) = putStrLn $ show a



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow