dejafu/dejafu.cabal
Michael Walker 5649c4d2a7 Use Set instead of [] where it makes sense.
A lot of the places where lists were used, there was an assumed invariant that
there would be no duplicate entries, for some criteria of equality. In some
cases this was enforced by `nub`, in others not. Sets are a much better choice
here, as they actually enforce the invariant, with better complexity for some
operations.
2015-07-21 16:09:47 +01:00

103 lines
3.6 KiB
Plaintext
Executable File

-- Initial monad-conc.cabal generated by cabal init. For further
-- documentation, see http://haskell.org/cabal/users-guide/
name: dejafu
version: 0.0.0.0
synopsis: Overloadable primitives for testable, potentially non-deterministic, concurrency.
description:
Concurrency is nice, deadlocks and race conditions not so much. The
@Par@ monad family, as defined in
<https://hackage.haskell.org/package/abstract-par/docs/Control-Monad-Par-Class.html abstract-par>
provides deterministic parallelism, but sometimes we can tolerate a
bit of nondeterminism.
.
This package provides a class of monads for potentially
nondeterministic concurrency, with an interface very much in the
spirit of @Par@, but slightly more relaxed. Specifically,
@MonadConc@'s @IVar@ equivalent, @CVar@s, can be written to multiple
times.
.
== @MonadConc@ with 'IO':
.
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
Test.DejaFu.
.
Whilst this assumption may not hold in general when 'IO' is
involved, you should strive to produce test cases where it does.
.
See the <https://github.com/barrucadu/dejafu README> for more
details.
homepage: https://github.com/barrucadu/dejafu
license: MIT
license-file: LICENSE
author: Michael Walker
maintainer: mike@barrucadu.co.uk
-- copyright:
category: Concurrency
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
source-repository head
type: git
location: https://github.com/barrucadu/dejafu.git
-- source-repository this
-- type: git
-- location: https://github.com/barrucadu/dejafu.git
-- tag:
library
exposed-modules: Control.Monad.Conc.Class
, Control.Monad.STM.Class
, Control.Concurrent.CVar
, Control.Concurrent.CVar.Strict
, Control.Concurrent.STM.CTVar
, Control.Concurrent.STM.CTMVar
, Test.DejaFu
, Test.DejaFu.Deterministic
, Test.DejaFu.Deterministic.IO
, Test.DejaFu.Deterministic.Schedule
, Test.DejaFu.SCT
, Test.DejaFu.STM
other-modules: Test.DejaFu.Deterministic.Internal
, Test.DejaFu.Deterministic.Internal.Common
, Test.DejaFu.Deterministic.Internal.CVar
, Test.DejaFu.Deterministic.Internal.Threading
, Test.DejaFu.SCT.Internal
, Test.DejaFu.STM.Internal
, Control.State
, Data.List.Extra
, Data.Ord.Extra
-- other-extensions:
build-depends: base >=4.5 && <5
, containers
, deepseq
, exceptions >=0.7
, monad-loops
, mtl
, random
, stm
, transformers
-- hs-source-dirs:
default-language: Haskell2010
ghc-options: -Wall
test-suite tests
hs-source-dirs: tests
type: exitcode-stdio-1.0
main-is: Tests.hs
build-depends: dejafu, base
default-language: Haskell2010