Purely Functional Data Structures
Most books on data structures assume an imperative language such as C or C++. However, data structures for these languages do not always translate well to functional languages such as Standard ML, Haskell, or Scheme. This book describes data structures from the point of view of functional languages, with examples, and presents design techniques that allow programmers to develop their own functional data structures. The author includes both classical data structures, such as red-black trees and binomial queues, and a host of new data structures developed exclusively for functional languages. All source code is given in Standard ML and Haskell, and most of the programs are easily adaptable to other functional languages. This handy reference for professional programmers working with functional languages can also be used as a tutorial or for self-study.
What people are saying - Write a review
a x a addSeg amortized cost amortized data structures APPENDING banker's method binary numbers binary random-access lists binary search trees binomial heaps binomial tree bootstrapped catenable constructor D.Queue dappendL datatype DEEP f deleteMin deque digit Elem Elem.leq Elem.T end Figure end fun error empty exec exec2 execute Exercise findMin FINITEMAP force fun head fun insert fun isEmpty fun lazy fun tail functor global rebuilding implementation incremental int x a invariant isEmpty _ lazy evaluation LEAF leftist heaps lenf f lenr lenfm list x a list lookup lookupTree memoization mergePairs node number of debits O(log operation pairing heaps persistence persistent data structures physicist's method raise EMPTY red-black trees removeMinTree reverse RList root rotation schedule segment segs sequence SHALLOW shared cost signature skew binary Sortable splay trees Standard ML stream struct susp suspension tree of rank TRIE uncons unconsTree unshared cost update val empty
Page 208 - Tyng-Ruey Chuang and Benjamin Goldberg. Real-time deques, multihead Turing machines, and purely functional programming. In Conference on Functional Programming Languages and Computer Architecture, pages 289-298, June 1993.
Page 208 - F. Warren Burton. An efficient functional implementation of FIFO queues. Information Processing Letters, 14(5):205-206, July 1982.
Page 211 - Rob R. Hoogerwoord. A symmetric set of efficient list operations. Journal of Functional Programming, 2(4):505-513, October 1992. 13. John Hughes. A novel representation of lists and its application to the function "reverse".