| base-3.0.2.0: Basic libraries | Source code | Contents | Index

Control.Concurrent.Chan

Portability | non-portable (concurrency)
Stability | experimental
Maintainer | libraries@haskell.org

Contents

The `Chan` type
Operations
Stream interface

Description
Unbounded channels.
Synopsis

data Chan a
newChan :: IO (Chan a)
writeChan :: Chan a -> a -> IO ()
readChan :: Chan a -> IO a
dupChan :: Chan a -> IO (Chan a)
unGetChan :: Chan a -> a -> IO ()
isEmptyChan :: Chan a -> IO Bool
getChanContents :: Chan a -> IO [a]
writeList2Chan :: Chan a -> [a] -> IO ()

The `Chan` type

data Chan a | Source

`Chan` is an abstract type representing an unbounded FIFO channel.
Instances

Typeable1 Chan

Operations

newChan :: IO (Chan a) | Source

Build and returns a new instance of `Chan`.

writeChan :: Chan a -> a -> IO () | Source

Write a value to a `Chan`.

readChan :: Chan a -> IO a | Source

Read the next value from the `Chan`.

dupChan :: Chan a -> IO (Chan a) | Source

Duplicate a `Chan`: the duplicate channel begins empty, but data written to either channel from then on will be available from both. Hence this creates a kind of broadcast channel, where data written by anyone is seen by everyone else.

unGetChan :: Chan a -> a -> IO () | Source

Put a data item back onto a channel, where it will be the next item read.

isEmptyChan :: Chan a -> IO Bool | Source

Returns `True` if the supplied `Chan` is empty.
Stream interface

getChanContents :: Chan a -> IO [a] | Source

Return a lazy list representing the contents of the supplied `Chan`, much like `hGetContents`.

writeList2Chan :: Chan a -> [a] -> IO () | Source

Write an entire list of items to a `Chan`.
Produced by Haddock version 0.9