diff options
authorSergei Trofimovich <>2016-01-19 21:56:02 +0000
committerSergei Trofimovich <>2016-01-19 22:29:01 +0000
commitadf753775394254435ccc6f6e0d029bb515aa093 (patch)
tree6d39e6c0fc85ab8c389f0b84c6500fbd1c45478b /dev-haskell/psqueues/metadata.xml
parentdev-haskell/hex: new package, a depend of dev-haskell/http2 (diff)
dev-haskell/psqueues: new package, a depend of dev-haskell/http2
Pure priority search queues. Package-Manager: portage-2.2.27
Diffstat (limited to 'dev-haskell/psqueues/metadata.xml')
1 files changed, 48 insertions, 0 deletions
diff --git a/dev-haskell/psqueues/metadata.xml b/dev-haskell/psqueues/metadata.xml
new file mode 100644
index 000000000000..d4c0b904bde1
--- /dev/null
+++ b/dev-haskell/psqueues/metadata.xml
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "">
+ <herd>haskell</herd>
+ <longdescription>
+ The psqueues package provides
+ &lt; Priority Search Queues&gt; 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&#39;s
+ &lt; A Simple Implementation Technique for Priority Search Queues&gt;.
+ Hence, it is similar to the
+ &lt; PSQueue&gt; 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 &lt; radix tree&gt;
+ (like @IntMap@) with an additional min-heap property.
+ * @HashPSQ k p v@ is a fairly straightforward extension of @IntPSQ@: it
+ simply uses the keys&#39; 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:
+ &lt; PSQueue&gt;
+ and
+ &lt; fingertree-psqueue&gt;.
+ &lt;&lt;;&gt;
+ &lt;&lt;;&gt;
+ Typical applications of Priority Search Queues include:
+ * Caches, and more specifically LRU Caches;
+ * Schedulers;
+ * Pathfinding algorithms, such as Dijkstra&#39;s and A*.
+ </longdescription>