mirror of
https://github.com/barrucadu/dejafu.git
synced 2024-12-24 05:55:18 +03:00
5649c4d2a7
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.
103 lines
3.6 KiB
Plaintext
Executable File
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
|