Purely Functional Data Structures

Front Cover
Cambridge University Press, Jun 13, 1999 - Computers - 220 pages
9 Reviews
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

User ratings

5 stars
5
4 stars
3
3 stars
0
2 stars
1
1 star
0

Review: Purely Functional Data Structures

User Review  - Barış MeriÁ - Goodreads

It's "the book" on the functional data structures. Read full review

Review: Purely Functional Data Structures

User Review  - Daniel Lyons - Goodreads

This book is for FP what Design Patterns is for OOP. Read through Chapter 3 and functional purity and persistence will become clear. I consider the rest of the book optional advanced reading. Highly recommended. Read full review

Contents

Introduction
1
12 Strict vs Lazy Evaluation
2
13 Terminology
3
14 Approach
4
Persistence
7
22 Binary Search Trees
11
23 Chapter Notes
15
Some Familiar Data Structures in a Functional Setting
17
71 Scheduling
84
72 RealTime Queues
86
73 Binomial Heaps
89
74 BottomUp Mergesort with Sharing
94
75 Chapter Notes
97
Lazy Rebuilding
99
82 Global Rebuilding
101
83 Lazy Rebuilding
104

32 Binomial Heaps
20
33 RedBlack Trees
24
34 Chapter Notes
29
Lazy Evaluation
31
42 Streams
34
43 Chapter Notes
37
Fundamentals of Amortization
39
52 Queues
42
53 Binomial Heaps
45
54 Splay Heaps
46
55 Pairing Heaps
52
56 The Bad News
54
57 Chapter Notes
55
Amortization and Persistence via Lazy Evaluation
57
62 Reconciling Amortization and Persistence
58
63 The Bankers Method
61
64 The Physicists Method
68
65 Lazy Pairing Heaps
79
66 Chapter Notes
81
Eliminating Amortization
83
84 DoubleEnded Queues
106
85 Chapter Notes
113
Numerical Representations
115
91 Positional Number Systems
116
93 Skew Binary Numbers
130
94 Trinary and Quaternary Numbers
138
95 Chapter Notes
140
DataStructural Bootstrapping
141
101 Structural Decomposition
142
102 Structural Abstraction
151
103 Bootstrapping To Aggregate Types
163
104 Chapter Notes
169
Implicit Recursive Slowdown
171
112 Catenable DoubleEnded Queues
175
113 Chapter Notes
184
Haskell Source Code
185
Bibliography
207
Index
217
Copyright

Common terms and phrases

Popular passages

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 211 - Robert Hood. The Efficient Implementation of Very-High-Level Programming Language Constructs. PhD thesis, Department of Computer Science, Cornell University, August 1982. (Cornell TR 82-503).
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".
Page 207 - F. Warren Burton and Robert D. Cameron. Pattern matching with abstract data types. Journal of Functional Programming, 3(2): 171 - 190, 1993.

References to this book

All Book Search results »

About the author (1999)

Okasaki-Carnegie Mellon University

Bibliographic information