packages feed

abstract-deque-0.1.5: abstract-deque.cabal

Name:                abstract-deque
Version:             0.1.5
License:             BSD3
License-file:        LICENSE
Author:              Ryan R. Newton
Maintainer:          rrnewton@gmail.com
Category:            Data 
Build-type:          Simple
Cabal-version:       >= 1.8

-- Version History:
-- 0.1: 
-- 0.1.1: Added nullQ to interface. [First release]
-- 0.1.2: dependency on IORefCAS
-- 0.1.3: Actually turned on real CAS! DANGER
-- 0.1.4: Another release.
-- 0.1.5: Fix for 6.12 and 7.0.

Synopsis: Abstract, parameterized interface to mutable Deques.

Description:

  An abstract interface to highly-parameterizable queues/deques.
  . 
  Background: There exists a feature space for queues that extends between:
  .
    * simple, single-ended, non-concurrent, bounded queues 
  .
    * double-ended, threadsafe, growable queues
  .
  ... with important points inbetween (such as
  the queues used for work-stealing).
  .
  This package includes an interface for Deques that allows the
  programmer to use a single API for all of the above, while using the
  type-system to select an efficient implementation given the
  requirements (using type families).
  .
  This package also includes a simple reference implementation based
  on 'IORef' and "Data.Sequence".

Library
  exposed-modules:   Data.Concurrent.Deque.Class,
                     Data.Concurrent.Deque.Tests,
                     Data.Concurrent.Deque.Reference,
                     Data.Concurrent.Deque.Reference.DequeInstance
  build-depends:     base >= 4 && < 5, 
                     containers, HUnit

  if impl( ghc >= 7.2) {
    build-depends:   IORefCAS >= 0.2 
    cpp-options:  -DUSE_CAS -DDEFAULT_SIGNATURES
--    extensions: DefaultSignatures
--    GHC-Options: -XDefaultSignatures
  }

  extensions: CPP
  ghc-options: -O2



Test-Suite test-abstract-deque
    type:       exitcode-stdio-1.0
    main-is:    Test.hs
    build-depends:     base >= 4 && < 5, IORefCAS >= 0.2, containers, HUnit
    ghc-options: -O2 -threaded -rtsopts