Chan -package:shake

Unbounded channels. The channels are implemented with MVars and therefore inherit all the caveats that apply to MVars (possibility of races, deadlocks etc). The stm (software transactional memory) library has a more robust implementation of channels called TChans.
Chan is an abstract type representing an unbounded FIFO channel.
Chan is an abstract type representing an unbounded FIFO channel.
Unbounded channels. Deviations: Chan as defined here does not have an Eq instance, this is because the MonadConc MVar type does not have an Eq constraint. The deprecated unGetChan and isEmptyCHan functions are not provided. Furthermore, the getChanContents function is not provided as it needs unsafe I/O.
Chan is an abstract type representing an unbounded FIFO channel.
Some extra kit for Chans Please see the README on Github at https://github.com/athanclark/chan#readme
Result is different than OldFact.
An action to be invoked if a configuration property is changed. If this action is invoked and throws an exception, the onError function will be called.
CHANGEATTRS is a more expressive alternative to ADDATTRS
Used to indicate to SDL whether it is allowed to open other audio devices (if a property is marked as a Desire) or if it should fail if the device is unavailable (Mandate).
How many channels audio should be played on