[commit: packages/containers] changelog-foldtree, cleaned_bugfix394, master, merge-doc-target, merge-fixes-5.9, merge-restrict-fix-5.8, revert-408-bugfix_394: Add `alterF` for Data.Map (7d03d76)

git at git.haskell.org git at git.haskell.org
Mon Apr 17 21:40:52 UTC 2017


Repository : ssh://git@git.haskell.org/containers

On branches: changelog-foldtree,cleaned_bugfix394,master,merge-doc-target,merge-fixes-5.9,merge-restrict-fix-5.8,revert-408-bugfix_394
Link       : http://git.haskell.org/packages/containers.git/commitdiff/7d03d76b7647dc731da2e75dcdd45f6c2e667682

>---------------------------------------------------------------

commit 7d03d76b7647dc731da2e75dcdd45f6c2e667682
Author: David Feuer <David.Feuer at gmail.com>
Date:   Mon May 2 14:29:36 2016 -0400

    Add `alterF` for Data.Map
    
    Use a bit queue to implement `alterF` for `Data.Map`. This is fairly
    competitive with the simple implementation in `Control.Lens.At`
    even with `Int` keys. For keys that are more expensive to compare,
    it should be substantially better. In case of extremely large maps
    that would overflow the bit queue, this falls back to a slower,
    Yoneda-based, implementation. This code is disabled when the word
    size is at least 61, as maps with nearly a quadrillion entries seem
    somewhat unlikely.
    
    Add rules to specialize to `Const` and `Identity` functors.
    
    Add QuickCheck properties to supplement the unit tests, including
    ones that should trigger the rewrite rules and ones that should not.
    
    Remove some more pre-7.0 junk.


>---------------------------------------------------------------

7d03d76b7647dc731da2e75dcdd45f6c2e667682
 .gitignore                   |   5 +
 Data/Map/Base.hs             | 308 ++++++++++++++++++++++++++++++++++++++++---
 Data/Map/Lazy.hs             |   2 +-
 Data/Map/Strict.hs           |  72 +++++++++-
 Data/Sequence.hs             |   6 +-
 Data/Utils/BitQueue.hs       | 130 ++++++++++++++++++
 Data/Utils/BitUtil.hs        |  19 ++-
 benchmarks/Map.hs            | 108 ++++++++-------
 changelog.md                 |   8 +-
 containers.cabal             |  38 +++---
 tests/bitqueue-properties.hs |  33 +++++
 tests/map-properties.hs      |  46 ++++++-
 12 files changed, 684 insertions(+), 91 deletions(-)

Diff suppressed because of size. To see it, use:

    git diff-tree --root --patch-with-stat --no-color --find-copies-harder --ignore-space-at-eol --cc 7d03d76b7647dc731da2e75dcdd45f6c2e667682


More information about the ghc-commits mailing list