dejafu/README.markdown

43 lines
1.6 KiB
Markdown
Raw Normal View History

2015-01-31 18:50:54 +03:00
dejafu [![Build Status][build-status]][build-log]
======
2014-12-20 20:32:35 +03:00
Concurrency is nice, deadlocks and race conditions not so much. The
`Par` monad family, as defined in [abstract-par][] provides
deterministic parallelism, but sometimes we can tolerate a bit of
nondeterminism.
2015-01-31 18:50:54 +03:00
This package provides a class of monads for potentially
2014-12-20 20:32:35 +03:00
nondeterministic concurrency, with an interface very much in the
2015-01-31 18:50:54 +03:00
spirit of `Par`, but slightly more relaxed. Specifically,
`MonadConc`'s `IVar` equivalent, `CVar`s, can be written to multiple
times.
2014-12-20 20:32:35 +03:00
2014-12-20 21:17:43 +03:00
The documentation of the latest developmental version is
[available online][docs].
2015-01-31 18:50:54 +03:00
`MonadConc` and `IO`
--------------------
2015-01-12 17:24:12 +03:00
2015-01-31 18:50:54 +03:00
The intention of the `MonadConc` class is to provide concurrency where
any apparent nondeterminism arises purely from the scheduling
behaviour. To put it another way, a given computation, parametrised
with a fixed set of scheduling decisions, is deterministic. This
assumption is used by the testing functionality provided by
Control.Monad.Conc.SCT.
2015-01-12 17:24:12 +03:00
Whilst this assumption may not hold in general when `IO` is involved,
you should strive to produce test cases where it does.
2014-12-20 20:32:35 +03:00
Contributing
------------
Bug reports, pull requests, and comments are very welcome!
Feel free to contact me on GitHub, through IRC (#haskell on freenode),
or email (mike@barrucadu.co.uk).
2015-01-31 18:50:54 +03:00
[build-status]: https://travis-ci.org/barrucadu/dejafu.svg?branch=master
[build-log]: https://travis-ci.org/barrucadu/dejafu
2014-12-20 20:32:35 +03:00
[abstract-par]: https://hackage.haskell.org/package/abstract-par/docs/Control-Monad-Par-Class.html
2015-01-31 18:50:54 +03:00
[docs]: https://barrucadu.github.io/dejafu