Planar point location using persistent search trees
Communications of the ACM
Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Algebra of programming
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
The art of computer programming, volume 1 (3rd ed.): fundamental algorithms
Introduction to Algorithms
Journal of Functional Programming
Three algorithms on Braun trees
Journal of Functional Programming
Computational Linguistics
Zippy Tabulations of Recursive Functions
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Hi-index | 0.00 |
A nexus is a tree that contains shared nodes, nodes that have more than one incoming arc. Shared nodes are created in almost every functional program---for instance, when updating a purely functional data structure---though programmers are seldom aware of this. In fact, there are only a few algorithms that exploit sharing of nodes consciously. One example is constructing a tree in sublinear time. In this pearl we discuss an intriguing application of nexuses; we show that they serve admirably as memo structures featuring constant time access to memoized function calls. Along the way we encounter Boolean lattices and binomial trees.