bytestring-trie: An efficient finite map from (byte)strings to values.

[ bsd3, data, data-structures, library ] [ Propose Tags ] [ Report a vulnerability ]

An efficient finite map from (byte)strings to values.

The implementation is based on big-endian patricia trees, like Data.IntMap. We first trie on the elements of Data.ByteString and then trie on the big-endian bit representation of those elements. Patricia trees have efficient algorithms for union and other merging operations, but they're also quick for lookups and insertions.

If you are only interested in being able to associate strings to values, then you may prefer the hashmap package which is faster for those only needing a map-like structure. This package is intended for those who need the extra capabilities that a trie-like structure can offer (e.g., structure sharing to reduce memory costs for highly redundant keys, taking the submap of all keys with a given prefix, contextual mapping, extracting the minimum and maximum keys, etc.)


[Skip to Readme]

Flags

Automatic Flags
NameDescriptionDefault
usecinternal

Use optimized C implementation for indexOfDifference. See notes in Data.Trie.ByteStringInternal.

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

  • No Candidates
Versions [RSS] 0.1, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 0.2.2, 0.2.3, 0.2.4, 0.2.4.1, 0.2.4.3, 0.2.5.0, 0.2.5.1, 0.2.5.2, 0.2.5.3, 0.2.6, 0.2.7, 0.2.7.1, 0.2.7.2, 0.2.7.3, 0.2.7.4, 0.2.7.5
Change log CHANGELOG
Dependencies base (>=4 && <4.11), binary, bytestring (>=0.9 && <0.11) [details]
Tested with ghc ==7.4.1, ghc ==7.4.2, ghc ==7.6.1, ghc ==7.6.2, ghc ==7.6.3, ghc ==7.8.1, ghc ==7.8.2, ghc ==7.8.3, ghc ==7.8.4, ghc ==7.10.1, ghc ==7.10.2, ghc ==7.10.3, ghc ==8.0.1, ghc ==8.0.2, ghc ==8.2.1, ghc ==8.2.2
License BSD-3-Clause
Copyright Copyright (c) 2008--2019 wren gayle romano
Author wren gayle romano
Maintainer wren@cpan.org
Category Data, Data Structures
Home page http://wrengr.org
Source repo head: git clone https://github.com/wrengr/bytestring-trie.git
Uploaded by WrenRomano at 2019-02-25T05:59:23Z
Distributions Fedora:0.2.7.2, LTSHaskell:0.2.7.5, NixOS:0.2.7.5, Stackage:0.2.7.5
Reverse Dependencies 24 direct, 361 indirect [details]
Downloads 25071 total (103 in the last 30 days)
Rating 2.5 (votes: 4) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2019-02-25 [all 2 reports]

Readme for bytestring-trie-0.2.4.3

[back to package description]

bytestring-trie

Hackage version Hackage-Deps TravisCI Build Status CircleCI Build Status

The bytestring-trie package provides an efficient implementation of tries mapping ByteString to values. The implementation is based on Okasaki's big-endian patricia trees, à la IntMap. We first trie on the elements of ByteString and then trie on the big-endian bit representation of those elements. Patricia trees have efficient algorithms for union and other merging operations, but they're also quick for lookups and insertions.

If you are only interested in being able to associate individual ByteStrings to values, then you may prefer the hashmap package which is faster for those only needing a map-like structure. This package is intended for those who need the extra capabilities that a trie-like structure can offer (e.g., structure sharing to reduce memory costs for highly redundant keys, taking the submap of all keys with a given prefix, contextual mapping, extracting the minimum and maximum keys, etc.)

Install

This is a simple package and should be easy to install. You should be able to use one of the following standard methods to install it.

-- With cabal-install and without the source:
$> cabal install bytestring-trie

-- With cabal-install and with the source already:
$> cd bytestring-trie
$> cabal install

-- Without cabal-install, but with the source already:
$> cd bytestring-trie
$> runhaskell Setup.hs configure --user
$> runhaskell Setup.hs build
$> runhaskell Setup.hs haddock --hyperlink-source
$> runhaskell Setup.hs copy
$> runhaskell Setup.hs register

The Haddock step is optional.

Portability

The implementation is quite portable, relying only on a few basic language extensions. The complete list of extensions used is:

  • CPP
  • ForeignFunctionInterface
  • MagicHash
  • NoImplicitPrelude