Corpus ID: 14729485

Adams ’ Trees Revisited Correct and Efficient Implementation

  title={Adams ’ Trees Revisited Correct and Efficient Implementation},
  author={Milan Straka},
We present a correct proof of Adams’ trees of bounded balance, which are used in Haskell to implement Data.Map and Data.Set. Our analysis includes the previously ignored join operation, and also guarantees trees with smaller depth than the original one. Because the Adams’ trees can be parametrized, we use benchmarking to find the best choice of parameters. Finally, a saving memory technique based on introducing additional data constructor is evaluated. 


Binary search trees of bounded balance
A new class of binary search trees, called trees of bounded balance, is introduced. These trees are easy to maintain in their form despite insertions and deletions of nodes, and the search time isExpand
Faster laziness using dynamic pointer tagging
This paper re-examine the "tagless" aspect of the STG-machine that GHC uses as its evaluation model, and proposes two tagging strategies: a simple strategy called semi-tagging that seeks to avoid one common source of unpredictable indirect jumps, and a more complex strategy that uses the spare low bits in a pointer to encode information about the pointed-to object. Expand
Balancing weight-balanced trees
This paper identifies the exact valid range of the rotation parameters for insertion and deletion in the original WBT algorithm where one and only one integer solution exists. Expand
A dichromatic framework for balanced trees
  • L. Guibas, R. Sedgewick
  • Computer Science
  • 19th Annual Symposium on Foundations of Computer Science (sfcs 1978)
  • 1978
This paper shows how to imbed in this framework the best known balanced tree techniques and then use the framework to develop new algorithms which perform the update and rebalancing in one pass, on the way down towards a leaf. Expand
The performance of the Haskell containers package
This paper performs a thorough performance analysis of the containers package, the de facto standard Haskell containers library, and significantly improves its performance, making it comparable to the best implementations available. Expand
The organization of information placed in the points of an automatic computer is discussed and the role of memory, storage and retrieval in this regard is discussed. Expand
Implementing sets efficiently in a functional language (Technical Report CSTR
  • 1992
The art of computer programming, volume 3: (2nd ed.) sorting and searching
The Art of Computer Programming Sorting and Searching, chap. 6.2.2: Binary Tree Searching
  • The Art of Computer Programming Sorting and Searching, chap. 6.2.2: Binary Tree Searching
  • 1997
Efficient Sets - A Balancing Act
  • S. Adams
  • Computer Science
  • J. Funct. Program.
  • 1993