The promotion and accumulation strategies in transformational programming
ACM Transactions on Programming Languages and Systems (TOPLAS) - Lecture notes in computer science Vol. 174
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Data structures and program transformation
Science of Computer Programming
An introduction to functional programming
An introduction to functional programming
Research topics in functional programming
Research topics in functional programming
Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Type theory and functional programming
Type theory and functional programming
Deriving structural hylomorphisms from recursive definitions
Proceedings of the first ACM SIGPLAN international conference on Functional programming
Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space)
POPL '96 Proceedings of the 23rd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A calculational fusion system HYLO
Proceedings of the IFIP TC 2 WG 2.1 international workshop on Algorithmic languages and calculi
Continuation-Based Program Transformation Strategies
Journal of the ACM (JACM)
The Science of Programming
A Typed Lambda Calculus with Categorical Type Constructors
Category Theory and Computer Science
Algebras for tree algorithms
Generic validation of structural content with parametric modules
Proceedings of the sixth ACM SIGPLAN international conference on Functional programming
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Better XML Parser through Functional Programming
PADL '02 Proceedings of the 4th International Symposium on Practical Aspects of Declarative Languages
Calculating Functional Programs
Revised Lectures from the International Summer School and Workshop on Algebraic and Coalgebraic Methods in the Mathematics of Program Construction
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
Cycle therapy: a prescription for fold and unfold on regular trees
Proceedings of the 3rd ACM SIGPLAN international conference on Principles and practice of declarative programming
FUNCTIONAL PEARL: Unfolding pointer algorithms
Journal of Functional Programming
A pointless derivation of radix sort
Journal of Functional Programming
Recursion patterns and time-analysis
ACM SIGPLAN Notices
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Metamorphisms: Streaming representation-changers
Science of Computer Programming
Point-free Program Transformation
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Proof Methods for Corecursive Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Google's MapReduce programming model — Revisited
Science of Computer Programming
Stream fusion: from lists to streams to nothing at all
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Google's MapReduce programming model – Revisited
Science of Computer Programming
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Adapting functional programs to higher order logic
Higher-Order and Symbolic Computation
The worker/wrapper transformation
Journal of Functional Programming
Algebras for combinatorial search
Journal of Functional Programming
Parametric datatype-genericity
Proceedings of the 2009 ACM SIGPLAN workshop on Generic programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Adjoint folds and unfolds: or: scything through the thicket of morphisms
MPC'10 Proceedings of the 10th international conference on Mathematics of program construction
UTP'08 Proceedings of the 2nd international conference on Unifying theories of programming
Monadic maps and folds for multirelations in an allegory
UTP'08 Proceedings of the 2nd international conference on Unifying theories of programming
Exploiting algebra/coalgebra duality for program fusion extensions
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Combining datatypes and effects
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Fission for program comprehension
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
Program fusion with paramorphisms
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Algebras for combinatorial search
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Sorting with bialgebras and distributive laws
Proceedings of the 8th ACM SIGPLAN workshop on Generic programming
Generic programming with adjunctions
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Point-free Program Transformation
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Proof Methods for Corecursive Programs
Fundamenta Informaticae - Program Transformation: Theoretical Foundations and Basic Techniques. Part 1
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Hi-index | 0.00 |
Folds are appreciated by functional programmers. Their dual, unfolds, are not new, but they are not nearly as well appreciated. We believe they deserve better. To illustrate, we present (indeed, we calculate) a number of algorithms for computing the breadth-first traversal of a tree. We specify breadth-first traversal in terms of level-order traversal, which we characterize first as a fold. The presentation as a fold is simple, but it is inefficient, and removing the inefficiency makes it no longer a fold. We calculate a characterization as an unfold from the characterization as a fold; this unfold is equally clear, but more efficient. We also calculate a characterization of breadth-first traversal directly as an unfold; this turns out to be the 'standard' queue-based algorithm.