Refer to article with less spelling errors (open access, same content)
Merge pull request #11 from thomie/master

Data.Graph: refer to a better version of the King and Launchbury article
Fix haddock links to modules
Force the components of returned pairs

Some functions, like partition, return a pair of values. Before this
change these functions would do almost no work and return immediately,
due to suspending most of the work in closures. This could cause space
leaks.

Closes #14.
Add fromList variants to benchmark.

Also set the size of inputs for various containers to the same value 2^12.
Add fromList tests to Map and IntMap.

This test makes sure that fromList, fromAscList and
fromDistinctAscList returns the same map.
Improve {Map,Set}.fromDistinctAscList.

Benchmarks show 42% improvement for Map and 39% improvement for Set.

The new implementation builds the map on the fly, without needing to
know the number of elements in the list. It proceeds by building a map
of size 2^1-1, 2^2-1, 2^3-1, .... When the input list is empty, there is
at most log N trees left. These are joined from the smallest to the
largest.
Fix fromDistinctAscList benchmark.

It used fromAscList instead fromDistinctAscList.
Allow running only specified benchmarks.
Add fromList with keys in descending order.

Used to compare fromList on ordered and unordered inputs, as
a linear-time algorithm is used in former case.
Improve {Map,Set}.fromList.

While the input is sorted, use implementation of fromDistinctAscList.
When first unordered key is found, switch to the general fromList
implementation, which inserts the rest of the keys to the already
constructed tree.

This gives a huge advantage for sorted inputs. The inplementation is
5% (for Map) and 0% (for Set) slower than fromDistinctAscList in that case.
The larger overhead for Map is probably because of the the pair unpacking.

For input list of size 2^12, the fromList is 10 times faster if the input
is sorted.

The fromList could be further improved by trying to handle semi-sorted
inputs. But currently I have no idea how to do it efficiently.
Add test to validate bitcount implementation using popCount
Change bitcount in IntSet to use popCount
Remove use of defaultMainWithOpts from test suite

defaultMainWithOpts doesn't allow us to pass additional flags, such as
--jxml, on the command line. The old behavior (i.e. setting the number
of tests) can still be achieved like so:

cabal test --test-option=-a500 \
  --test-option=--maximum-unsuitable-generated-tests=500
-Wall police
Annotate IntMap.fold*WithKey with correct Key synonym
Annotate IntSet.* with Key; move type Key = Int to IntSet.Base
Bump version number to 0.5.1.0
Remove from docs that hedge-union is faster in (big `union` small) case.

As measured by SetOperations-Set.hs and SetOperations-Map.hs benchmarks,
it is not the case. Depending on the relative order of elements in the
set/map, both (big `union` small) and (small `union` big) cases can be
faster than the other.
Implement indexing operations on 'Set'