Functional Pearls Efficient sets—a balancing act

  title={Functional Pearls Efficient sets—a balancing act},
  author={Stephen R. Adams},
  journal={Journal of Functional Programming},
  pages={553 - 561}
  • S. Adams
  • Published 1 October 1993
  • Computer Science
  • Journal of Functional Programming
In late 1991 I organized an international programming competition for the Standard ML community. Each entrant implemented the 'set of integers' abstract data type, matching a signature that I provided. Prizes (donated by MIT Press) were awarded in two categories: fastest program (on a particular benchmark), and most elegant yet still efficient program. More than a dozen entries were received; the top four entries in the speed category are listed here: The winner in the elegance category was… 
Parallel Ordered Sets Using Join Guy Blelloch
This paper shows that Adams’ algorithms are both work efficient and highly parallel (polylog depth) across four different balancing schemes—AVL trees, red-black trees, weight balanced trees and treaps.
Red-Black Trees in a Functional Setting
An algorithm for insertion into red-black trees (Guibas and Sedgewick, 1978) that any competent programmer should be able to implement in fifteen minutes or less is presented.
Parallel Ordered Sets Using Join
This paper shows that Adams’ algorithms are both work efficient and highly parallel (polylog depth) across four different balancing schemes—AVL trees, red-black trees, weight balanced trees and treaps.
Fast Mergeable Integer Maps
This work describes an implementation of finite maps with integer keys that performs well in practice on all three operations: looking up the value associated with a key, inserting a new binding, and merging two finite maps.
Triemaps that match
This paper presents a new approach to efficient matching for statically typed functional programming, which yields an interesting new viewpoint — and a practically useful design pattern, with good runtime performance.
Programming in Standard ML '97: A Tutorial Introduction
An abstract data type for sets, which introduces a type constructor, set, a value emptyset and two functions, addset and memberset, and takes away the constructor status of null and ins, which means they cannot be used in pattern matching to destruct the constructed value and see inside.
A simple implementation technique for priority search queues
This paper presents a new implementation technique for priority search queues, an amazing blend of finite maps and priority queues that can be used, for instance, to give a simple, purely functional implementation of Dijkstra's single-source shortest-paths algorithm.
Purely functional data structures
This work describes several techniques for designing functional data structures, and numerous original data structures based on these techniques, including multiple variations of lists, queues, double-ended queues, and heaps, many supporting more exotic features such as random access or efficient catenation.
Hinted Dictionaries: Efficient Functional Ordered Sets and Maps
In this example, alternative data structures can be provided by simply changing the type signature of the hinted set from hinted_set to another implementation, without modifying anything else.
PaC-trees: supporting parallel and compressed purely-functional collections
This paper presents PaC-trees, a purely-functional data structure supporting functional interfaces for sets, maps, and sequences that provides a significant reduction in space over existing approaches and designed CPAM, a C++ library that implements the full functionality of PAM, while offering significant extra functionality for compression.


The Design and Analysis of Computer Algorithms
This text introduces the basic data structures and programming techniques often used in efficient algorithms, and covers use of lists, push-down stacks, queues, trees, and graphs.
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 is
The Art of Computer Programming
The arrangement of this invention provides a strong vibration free hold-down mechanism while avoiding a large pressure drop to the flow of coolant fluid.
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.
Linear Lists and Prorty Queues as Balanced Binary Trees
  • Clark A. Crane
  • Mathematics
    Outstanding Dissertations in the Computer Sciences
  • 1972
An efficient functional implementatation of sets
  • 1992
An efficient functional implementatation of sets. Report CSTR 92-10, Electronics and Computer Science, University of Southampton
  • 1992