packages feed

dejafu-0.1.0.0: dejafu.cabal

-- Initial monad-conc.cabal generated by cabal init.  For further 
-- documentation, see http://haskell.org/cabal/users-guide/

name:                dejafu
version:             0.1.0.0
synopsis:            Overloadable primitives for testable, potentially non-deterministic, concurrency.

description:
  /[Déjà Fu is] A martial art in which the user's limbs move in time as well as space, […] It is best described as "the feeling that you have been kicked in the head this way before"/ -- Terry Pratchett, Thief of Time
  .
  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 in the spirit of
  GHC's normal concurrency abstraction.
  .
  == @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:      0.1.0.0

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.Internal
                     , Test.DejaFu.SCT.Internal
                     , Test.DejaFu.STM.Internal

                     , 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