2014-12-18 14:03:17 +03:00
|
|
|
-- Initial monad-conc.cabal generated by cabal init. For further
|
|
|
|
-- documentation, see http://haskell.org/cabal/users-guide/
|
|
|
|
|
|
|
|
name: monad-conc
|
|
|
|
version: 0.0.0.0
|
|
|
|
synopsis: Overloadable primitives for potentially non-deterministic concurrency.
|
2015-01-12 17:24:12 +03:00
|
|
|
|
|
|
|
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 family of monads for potentially
|
|
|
|
nondeterministic concurrency, with an interface very much in the
|
|
|
|
spirit of @Par@, but slightly more relaxed. Specifically, @Conc@'s
|
|
|
|
@IVar@ equivalent, @CVar@s, can be written to multiple times.
|
|
|
|
.
|
|
|
|
== @Conc@ monads with 'IO':
|
|
|
|
.
|
|
|
|
The intention of the @Conc@ monads is to provide concurrency where
|
|
|
|
any apparent nondeterminism arises purely from the scheduling
|
|
|
|
behaviour. To put it another way, a given @Conc@ 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.
|
|
|
|
.
|
|
|
|
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/monad-conc README> for more
|
|
|
|
details.
|
|
|
|
|
2014-12-18 14:03:17 +03:00
|
|
|
homepage: https://github.com/barrucadu/monad-conc
|
|
|
|
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
|
2015-01-28 20:48:26 +03:00
|
|
|
|
|
|
|
, Control.Concurrent.CVar
|
|
|
|
, Control.Concurrent.CVar.Strict
|
|
|
|
|
2014-12-19 09:45:50 +03:00
|
|
|
, Control.Monad.Conc.Fixed
|
2014-12-27 15:20:45 +03:00
|
|
|
, Control.Monad.Conc.Fixed.IO
|
|
|
|
, Control.Monad.Conc.Fixed.Schedulers
|
2014-12-20 14:01:51 +03:00
|
|
|
, Control.Monad.Conc.SCT
|
2015-01-30 18:16:15 +03:00
|
|
|
, Control.Monad.Conc.SCT.Shrink
|
2015-01-12 20:27:41 +03:00
|
|
|
, Control.Monad.Conc.SCT.Tests
|
2015-01-28 20:48:26 +03:00
|
|
|
|
2014-12-27 15:20:45 +03:00
|
|
|
other-modules: Control.Monad.Conc.Fixed.Internal
|
2015-01-26 18:34:40 +03:00
|
|
|
, Control.Monad.Conc.SCT.Bounding
|
2015-01-09 05:35:28 +03:00
|
|
|
, Control.Monad.Conc.SCT.Internal
|
2015-01-27 16:46:20 +03:00
|
|
|
, Data.List.Extra
|
2014-12-18 14:03:17 +03:00
|
|
|
-- other-extensions:
|
2014-12-20 00:30:38 +03:00
|
|
|
build-depends: base >=4.6 && <5
|
2014-12-19 09:45:50 +03:00
|
|
|
, containers
|
2015-01-19 14:50:43 +03:00
|
|
|
, deepseq
|
2015-01-24 13:57:05 +03:00
|
|
|
, monad-loops
|
2014-12-19 09:45:50 +03:00
|
|
|
, mtl
|
2014-12-19 10:09:26 +03:00
|
|
|
, random
|
2014-12-19 09:45:50 +03:00
|
|
|
, transformers
|
2014-12-18 14:03:17 +03:00
|
|
|
-- hs-source-dirs:
|
2014-12-21 19:34:55 +03:00
|
|
|
default-language: Haskell2010
|
2014-12-23 18:20:11 +03:00
|
|
|
ghc-options: -Wall
|
|
|
|
|
|
|
|
test-suite tests
|
2015-01-12 19:32:09 +03:00
|
|
|
hs-source-dirs: tests
|
2014-12-23 18:20:11 +03:00
|
|
|
type: exitcode-stdio-1.0
|
|
|
|
main-is: Tests.hs
|
2015-01-12 19:32:09 +03:00
|
|
|
build-depends: monad-conc, base
|
2014-12-23 18:20:11 +03:00
|
|
|
default-language: Haskell2010
|