Chan

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
How should you determine if a file has changed, used by shakeChange. The most common values are ChangeModtime (the default, very fast, touch causes files to rebuild) and ChangeModtimeAndDigestInput (slightly slower, touch and switching git branches does not cause input files to rebuild).
Compare equality of file contents digests, a file has changed if its digest changes. A touch will not force a rebuild. Use this mode if modification times on your file system are unreliable.
Compare equality of modification timestamps, a file has changed if its last modified time changes. A touch will force a rebuild. This mode is fast and usually sufficiently accurate, so is the default.
A file is rebuilt if both its modification time and digest have changed. For efficiency reasons, the modification time is checked first, and if that has changed, the digest is checked.
Use ChangeModtimeAndDigest for input/source files and ChangeModtime for output files. An input file is one which is a dependency but is not built by Shake as it has no matching rule and already exists on the file system.
A file is rebuilt if either its modification time or its digest has changed. A touch will force a rebuild, but even if a files modification time is reset afterwards, changes will also cause a rebuild.
Nothing has changed.
I recomputed the value and it was different.
I recomputed the value and it was the same.