OBS-URL: https://build.opensuse.org/package/show/devel:languages:haskell/ghc-psqueues?expand=0&rev=1
159 lines
4.8 KiB
Plaintext
159 lines
4.8 KiB
Plaintext
Name: psqueues
|
|
Version: 0.2.7.2
|
|
x-revision: 1
|
|
License: BSD3
|
|
License-file: LICENSE
|
|
Maintainer: Jasper Van der Jeugt <jaspervdj@gmail.com>
|
|
Bug-reports: https://github.com/jaspervdj/psqueues/issues
|
|
Synopsis: Pure priority search queues
|
|
Category: Data Structures
|
|
Build-type: Simple
|
|
Cabal-version: >=1.8
|
|
|
|
Description:
|
|
The psqueues package provides
|
|
<http://en.wikipedia.org/wiki/Priority_queue Priority Search Queues> in
|
|
three different flavors.
|
|
.
|
|
* @OrdPSQ k p v@, which uses the @Ord k@ instance to provide fast insertion,
|
|
deletion and lookup. This implementation is based on Ralf Hinze's
|
|
<http://citeseer.ist.psu.edu/hinze01simple.html A Simple Implementation Technique for Priority Search Queues>.
|
|
Hence, it is similar to the
|
|
<http://hackage.haskell.org/package/PSQueue PSQueue> library, although it is
|
|
considerably faster and provides a slightly different API.
|
|
.
|
|
* @IntPSQ p v@ is a far more efficient implementation. It fixes the key type
|
|
to @Int@ and uses a <http://en.wikipedia.org/wiki/Radix_tree radix tree>
|
|
(like @IntMap@) with an additional min-heap property.
|
|
.
|
|
* @HashPSQ k p v@ is a fairly straightforward extension of @IntPSQ@: it
|
|
simply uses the keys' hashes as indices in the @IntPSQ@. If there are any
|
|
hash collisions, it uses an @OrdPSQ@ to resolve those. The performance of
|
|
this implementation is comparable to that of @IntPSQ@, but it is more widely
|
|
applicable since the keys are not restricted to @Int@, but rather to any
|
|
@Hashable@ datatype.
|
|
.
|
|
Each of the three implementations provides the same API, so they can be used
|
|
interchangeably. The benchmarks show how they perform relative to one
|
|
another, and also compared to the other Priority Search Queue
|
|
implementations on Hackage:
|
|
<http://hackage.haskell.org/package/PSQueue PSQueue>
|
|
and
|
|
<http://hackage.haskell.org/package/fingertree-psqueue fingertree-psqueue>.
|
|
.
|
|
<<http://i.imgur.com/KmbDKR6.png>>
|
|
.
|
|
<<http://i.imgur.com/ClT181D.png>>
|
|
.
|
|
Typical applications of Priority Search Queues include:
|
|
.
|
|
* Caches, and more specifically LRU Caches;
|
|
.
|
|
* Schedulers;
|
|
.
|
|
* Pathfinding algorithms, such as Dijkstra's and A*.
|
|
|
|
Extra-source-files:
|
|
CHANGELOG
|
|
|
|
Source-repository head
|
|
type: git
|
|
location: http://github.com/jaspervdj/psqueues.git
|
|
|
|
Library
|
|
Ghc-options: -O2 -Wall
|
|
Hs-source-dirs: src
|
|
other-extensions: CPP, Safe, Trustworthy
|
|
|
|
Build-depends:
|
|
base >= 4.2 && < 5
|
|
, deepseq >= 1.2 && < 1.5
|
|
, hashable >= 1.1.2.3 && < 1.4
|
|
|
|
if impl(ghc>=6.10)
|
|
Build-depends: ghc-prim
|
|
|
|
Exposed-modules:
|
|
Data.HashPSQ
|
|
Data.IntPSQ
|
|
Data.OrdPSQ
|
|
Other-modules:
|
|
Data.BitUtil
|
|
Data.HashPSQ.Internal
|
|
Data.IntPSQ.Internal
|
|
Data.OrdPSQ.Internal
|
|
|
|
Benchmark psqueues-benchmarks
|
|
Type: exitcode-stdio-1.0
|
|
Hs-source-dirs: src benchmarks
|
|
Main-is: Main.hs
|
|
Ghc-options: -Wall
|
|
|
|
Other-modules:
|
|
BenchmarkTypes
|
|
Data.BitUtil
|
|
Data.FingerTree.PSQueue.Benchmark
|
|
Data.HashPSQ
|
|
Data.HashPSQ.Benchmark
|
|
Data.HashPSQ.Internal
|
|
Data.IntPSQ
|
|
Data.IntPSQ.Benchmark
|
|
Data.IntPSQ.Internal
|
|
Data.OrdPSQ
|
|
Data.OrdPSQ.Benchmark
|
|
Data.OrdPSQ.Internal
|
|
Data.PSQueue.Benchmark
|
|
|
|
Build-depends:
|
|
containers >= 0.5
|
|
, unordered-containers >= 0.2.4
|
|
, criterion >= 0.8
|
|
, mtl >= 2.1
|
|
, fingertree-psqueue >= 0.3
|
|
, PSQueue >= 1.1
|
|
, random >= 1.0
|
|
|
|
, base
|
|
, deepseq
|
|
, ghc-prim
|
|
, hashable
|
|
, psqueues
|
|
|
|
Test-suite psqueues-tests
|
|
Cpp-options: -DTESTING -DSTRICT
|
|
Ghc-options: -Wall
|
|
Hs-source-dirs: src tests
|
|
Main-is: Main.hs
|
|
Type: exitcode-stdio-1.0
|
|
|
|
Other-modules:
|
|
Data.BitUtil
|
|
Data.HashPSQ
|
|
Data.HashPSQ.Internal
|
|
Data.HashPSQ.Tests
|
|
Data.IntPSQ
|
|
Data.IntPSQ.Internal
|
|
Data.IntPSQ.Tests
|
|
Data.OrdPSQ
|
|
Data.OrdPSQ.Internal
|
|
Data.OrdPSQ.Tests
|
|
Data.PSQ.Class
|
|
Data.PSQ.Class.Gen
|
|
Data.PSQ.Class.Tests
|
|
Data.PSQ.Class.Util
|
|
|
|
Build-depends:
|
|
HUnit >= 1.2 && < 1.7
|
|
, QuickCheck >= 2.7 && < 2.14
|
|
, tasty >= 1.2 && < 1.3
|
|
, tasty-hunit >= 0.9 && < 0.11
|
|
, tasty-quickcheck >= 0.8 && < 0.11
|
|
|
|
, base
|
|
, array
|
|
, deepseq
|
|
, ghc-prim
|
|
, hashable
|
|
, psqueues
|
|
, tagged
|