Chapter 1 Introduction
Edison is a library of efficient data structures suitable for
implementation and use in functional programming languages.
It is named after Thomas Alva Edison and for the mnemonic value of
EDiSon (Efficient Data Strucutres).
The current version of the library supports Haskell. Future versions
of the library will also support Standard ML and possibly Scheme.
Edison provides several families of abstractions, each with multiple
implementations, along with guidance on how to choose the best
implementation for your particular application. The main abstractions
currently supported by Edison are
-
sequences (e.g., stacks, queues, deques),
- collections (e.g., sets, bags, priority queues where
the priority is the element), and
- associative collections (e.g., finite maps, priority queues
where the priority and element are distinct).
Note that, in its current state, the library is mostly a framework.
That is, I provide signatures, but not yet very many implementations.
I intend to populate this framework over time, adding a new module
every few weeks. Thus, the library is extremely unstable in the sense
that I will continually be modifying existing data structures and
adding new ones. However, I hope that the signatures will remain
fairly stable over time, making these changes to the implementations
mostly transparent to users of the library.
If you wish to request a particular data structure or volunteer to
provide an implementation, send me email at cdo@cs.columbia.edu.