mirror of
https://github.com/barrucadu/dejafu.git
synced 2024-12-24 05:55:18 +03:00
93 lines
3.3 KiB
Plaintext
Executable File
93 lines
3.3 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: WTFPL
|
|
license-file: LICENSE
|
|
author: Michael Walker
|
|
maintainer: mike@barrucadu.co.uk
|
|
-- copyright:
|
|
category: Concurrency
|
|
build-type: Simple
|
|
-- extra-source-files:
|
|
cabal-version: >=1.10
|
|
|
|
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.Bounding
|
|
, Test.DejaFu.SCT.Internal
|
|
|
|
, Control.State
|
|
, Data.List.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
|