サーチ…


ストリーミングIO

io-streamsはストリーム抽象化に焦点を絞ったストリームベースのライブラリですが、IOのためのライブラリです。それは2つのタイプを公開します:

  • 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