reactive-0.11.5: Push-pull functional reactive programming

Portabilitynon-portable (concurrency)
Stabilityexperimental
Maintainerlibraries@haskell.org

FRP.Reactive.Internal.Chan

Contents

Description

Unbounded channels.

Synopsis

The Chan type

data Chan a

Chan is an abstract type representing an unbounded FIFO channel.

Instances

Operations

newChan :: IO (Chan a)

Build and returns a new instance of Chan.

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

Write a value to a Chan.

readChan :: Chan a -> IO a

Read the next value from the Chan.

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

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 ()

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

isEmptyChan :: Chan a -> IO Bool

Returns True if the supplied Chan is empty.

Stream interface

getChanContents :: Chan a -> IO [a]

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

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

Write an entire list of items to a Chan.

New stuff

weakChanWriter :: Chan a -> IO (IO (Maybe (a -> IO ())))

A weak channel writer. Sustained by the read head. Thus channel consumers keep channel producers alive.