# Research papers/Data structures

From HaskellWiki

## Contents

- Functional pearl: Trouble shared is trouble halved
- Richard Bird and Ralf Hinze. In Johan Jeuring, editor, Proceedings of the ACM SIGPLAN 2003 Haskell Workshop, Uppsala, Sweden, August 28, 2003, pp 1-6.

- Manufacturing datatypes
- Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 1-16.

- Designing Data Structures
- A. Reid, Proceedings of the 1989 Glasgow Functional Programming Workshop, Workshops in Computing series, Springer Verlag, pp 170-181, 1989.

- Google's MapReduce Programming Model -- Revisited
- Ralf Lämmel, Draft; Online since 2 January, 2006; 26 pages

- A probabilistic approach to the problem of automatic selection of data representations
- Tyng-Ruey Chuang and Wen L. Hwang, In Proceedings of the 1996 ACM SIGPLAN International Conference on Functional Programming, pages 190-200. Philadephia, Pennsylvania, USA, May 1996.

- An Overview of Edison
- Chris Okasaki. Haskell Workshop 2000. September 2000

- Benchmarking Purely Functional Data Structures
- Graeme E. Moss. PhD. Thesis. York University. YCST-2000-01. July 1999.

## Lists

See also papers on list fusion

- The concatenate vanishes
- Philip Wadler. Note. December 1987

- Purely Functional Random-Access Lists
- Chris Okasaki. Functional Programming Languages and Computer Architecture, June 1995, pages 86-95.

- Polymorphic string matching
- Richard S. Bird. Proceedings of the 2005 ACM SIGPLAN workshop on Haskell, Tallinn, Estonia. 110 - 115, 2005 ISBN 1-59593-071-X

- The Under-Appreciated Unfold
- Jeremy Gibbons and Geraint Jones, Proceedings 3rd ACM SIGPLAN Int. Conf. on Functional Programming, ICFP'98, 34(1), ACM Press, New York, 273--279, 1998

- When is a function a fold or an unfold?
- Jeremy Gibbons, Graham Hutton and Thorsten Altenkirch (2001). In Coalgebraic Methods in Computer Science, April 2001 (Volume 44.1 of Electronic Notes in Theoretical Computer Science).

- Program optimisation, naturally
- Richard Bird, Jeremy Gibbons, and Geraint Jones. In J. W. Davies, A. W. Roscoe, and J. C. P. Woodcock, editors, Millenial Perspectives in Computer Science. Palgrave, 2000.

## Numerics

- Enumerating the rationals
- Jeremy Gibbons, David Lester, and Richard Bird. Journal of Functional Programming, 16(3):281-292, 2004.

## Arrays

- An Approach to Fast Arrays in Haskell
- Manuel M. T. Chakravarty and Gabriele Keller. In Johan Jeuring and Simon Peyton Jones, editors, lecture notes for The Summer School and Workshop on Advanced Functional Programming 2002. LNCS 2638, Springer-Verlag, pages 27-58, 2003.

- Functional Array Fusion
- Manuel M. T. Chakravarty and Gabriele Keller. In Xavier Leroy, editor, Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming, ACM Press, pp205-216, 2001.

- Bootstrapping One-sided Flexible Arrays
- Ralf Hinze. In Simon Peyton Jones, editor, Proceedings of the 2002 International Conference on Functional Programming, Pittsburgh, PA, USA, October 4-6, 2002, pp. 2-13.

- Numerical Representations as Higher-Order Nested Datatypes
- Ralf Hinze. Technical Report IAI-TR-98-12, Institut fr Informatik III, Universitt Bonn, December 1998.

- A new array operation
- Philip Wadler. Proceedings of the Workshop on Graph Reduction, Santa Fe, New Mexico, J. Fasel and R. Keller, editors, Springer-Verlag, October 1986.

- A randomized implementation of multiple functional arrays
- Tyng-Ruey Chuang, In Proceedings of the 1994 ACM Conference on Lisp and Functional Programming, pages 173-184. Orlando, Florida, USA, June 1994.

- Rewriting Haskell Strings
- Duncan Coutts, Don Stewart and Roman Leshchinskiy. Draft. Online 3-9-2006.

## Trees

- Constructing red-black trees
- Ralf Hinze. In Chris Okasaki, editor, Proceedings of the Workshop on Algorithmic Aspects of Advanced Programming Languages, WAAAPL'99, Paris, France, September 1999, pp. 89-99. The proceedings appear as a technical report of Columbia University, CUCS-023-99.

- Perfect trees and bit-reversal permutations
- Ralf Hinze. Technical Report IAI-TR-99-4, Institut fr Informatik III, Universitt Bonn, March 1999.

- Functional Pearl: A fresh look at binary search trees
- Ralf Hinze. Journal of Functional Programming. 2001

- Upwards and Downwards Accumulations on Trees
- Jeremy Gibbons (1993). In LNCS 669: Mathematics of Program Construction, ed. R. S. Bird, C. C. Morgan and J. C. P. Woodcock, Springer-Verlag, p. 122-138. Revised version appears in Proceedings of the Massey Functional Programming Workshop, ed. E. Ireland and N. Perry, 1992.

- Efficient Parallel Algorithms for Tree Accumulations
- Jeremy Gibbons, Wentong Cai and David Skillicorn (1994). Science of Computer Programming 23 p1-18.

- Linear-Time Breadth-First Tree Algorithms: An Exercise in the Arithmetic of Folds and Zips
- Geraint Jones and Jeremy Gibbons (1993). University of Auckland Computer Science Report No. 71, and IFIP Working Group 2.1 working paper 705 WIN-2.

- Polytypic Downwards Accumulations
- Jeremy Gibbons (1998). In LNCS 1422, Proceedings of Mathematics of Program Construction, Marstrand, Sweden, June 1998.

- Diets for Fat Sets
- Martin Erwig. Journal of Functional Programming, Vol. 8, No. 6, 627-632, 1998.

## Maps

- Fast Mergeable Integer Maps
- Chris Okasaki and Andy Gill, Workshop on ML, September 1998, pages 77-86.

## Tries

- Generalizing Generalized Tries
- Ralf Hinze. Technical Report IAI-TR-98-11, Institut fr Informatik III, Universitt Bonn, November 1998.

## Queues

- A Simple Implementation Technique for Priority Search Queues
- Ralf Hinze. In Xavier Leroy, editor, Proceedings of the 2001 International Conference on Functional Programming, Firenze, Italy, September 3-5, 2001.

- Simple and Efficient Purely Functional Queues and Deques
- Chris Okasaki. Journal of Functional Programming, 5(4):583-592, October 1995.

- Optimal Purely Functional Priority Queues
- Gerth Stlting Brodal and Chris Okasaki, Journal of Functional Programming, 6(6), December 1996.

## Heaps

- Functional Pearl: Explaining binomial heaps
- Ralf Hinze. Journal of Functional Programming. 9(1). January 1999.

## Graphs

- Structuring Depth First Search Algorithms in Haskell
- David King and John Launchbury. Proc. ACM Principles of Programming Languages, San Francisco, 1995.

- Graph Algorithms with a Functional Flavour
- John Launchbury, Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques, Bastad, Sweden, LNCS 925,p. 308-331, 1995 (editors: J. Jeuring, E. Meijer).

- Inductive Graphs and Functional Graph Algorithms
- Martin Erwig, Journal of Functional Programming Vol. 11, No. 5, 467-492, 2001

- Random Access to Abstract Data Types
- Martin Erwig. 8th Int. Conf. on Algebraic Methodology and Software Technology (AMAST 2000), LNCS 1816 , 135-149, 2000

- Fully Persistent Graphs - Which One to Choose?
- Martin Erwig. 9th Int. Workshop on Implementation of Functional Languages (IFL'97), LNCS 1467, 123-140, 1997

- Functional Programming with Graphs
- Martin Erwig. 2nd ACM SIGPLAN Int. Conf. on Functional Programming (ICFP'97), 52-65, 1997

## Collections

- Bulk types with class
- SL Peyton Jones, Electronic proceedings of the 1996 Glasgow Functional Programming Workshop, Ullapool, July 1996.

- Strongly typed heterogeneous collections
- Oleg Kiselyov, Ralf Lämmel, and Keean Schupke. Haskell '04: Proceedings of the ACM SIGPLAN workshop on Haskell, Snowbird, Utah, USA, 96--107, 2004

## Matrices

- Sparse matrix representations in a functional language
- P.W. Grant, J.A. Sharp, M.F. Webster and X. Zhang, Journal of Functional Programming, 6(1):143-170, January 1996.

## Binary

- Heap Compression and Binary I/O in Haskell
- Malcolm Wallace and Colin Runciman, Proceedings of the 2nd ACM Haskell Workshop, Amsterdam, the Netherlands, June 1997.

- The Bits Between The Lambdas: Binary Data in a Lazy Functional Language
- Malcolm Wallace and Colin Runciman. proceedings of the International Symposium on Memory Management, Vancouver, Canada, Oct 1998.

## Nested Datatypes

- Finger Trees: A Simple General-purpose Data Structure
- Ralf Hinze and Ross Paterson, Journal of Functional Programming

- De Bruijn Notation as a Nested Datatype
- Richard Bird and Ross Paterson. Journal of Functional Programming, vol. 9(1), pp. 77-91, 1999.

- Generalised Folds for Nested Datatypes
- Richard Bird and Ross Paterson, Formal Aspects of Computing, vol. 11(2), pp. 200-222, 1999.

- Polytypic Functions Over Nested Datatypes
- Ralf Hinze. In Rafael Dueire Lins, editor, 3rd Latin-American Conference on Functional Programming (CLaPF'99), March 1999.

- Disciplined, efficient, generalised folds for nested datatypes
- Clare Martin, Jeremy Gibbons and Ian Bayley (2004). Formal Aspects of Computing 16(1):19-35, 2004.

## Systems-level Data Structures

- Strongly Typed Memory Areas -- Programming Systems-Level Data Structures in a Functional Language
- Iavor S. Diatchki (OGI) and Mark P. Jones (Portland State University), Haskell Workshop 2006

## Probablistic Programming

- Probabilistic Functional Programming in Haskell
- Martin Erwig and Steve Kollmansberger. Journal of Functional Programming, Vol. 16, No. 1, 21-34, 2006

See also Research papers/Generics