Data structures and program transformation
Science of Computer Programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Powerlist: a structure for parallel recursion
ACM Transactions on Programming Languages and Systems (TOPLAS)
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Warm fusion: deriving build-catas from recursive definitions
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Computing downwards accumulations on trees quickly
Theoretical Computer Science - Special issue on theoretical computer science in Australia and New Zealand
Algebra of programming
Formal derivation of efficient parallel programs by construction of list homomorphisms
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parallelization in calculational forms
POPL '98 Proceedings of the 25th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Extracting and implementing list homomorphisms in parallel program development
Science of Computer Programming
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Synthesis of Parallel Algorithms
Synthesis of Parallel Algorithms
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
A Generalization of Short-Cut Fusion and its Correctness Proof
Higher-Order and Symbolic Computation
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Euro-Par '98 Proceedings of the 4th International Euro-Par Conference on Parallel Processing
Parallelization via Context Preservatio
ICCL '98 Proceedings of the 1998 International Conference on Computer Languages
Parallelizing functional programs by generalization
Journal of Functional Programming
Journal of Functional Programming
FUNCTIONAL PEARLS: Finding celebrities: A lesson in functional programming
Journal of Functional Programming
Towards automatic parallelization of tree reductions in dynamic programming
Proceedings of the eighteenth annual ACM symposium on Parallelism in algorithms and architectures
Automatic inversion generates divide-and-conquer parallel programs
Proceedings of the 2007 ACM SIGPLAN conference on Programming language design and implementation
Monadic augment and generalised short cut fusion
Journal of Functional Programming
The third homomorphism theorem on trees: downward & upward lead to divide-and-conquer
Proceedings of the 36th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Algebraic fusion of functions with an accumulating parameter and its improvement
Journal of Functional Programming
Towards systematic parallel programming over mapreduce
Euro-Par'11 Proceedings of the 17th international conference on Parallel processing - Volume Part II
Generalising and dualising the third list-homomorphism theorem: functional pearl
Proceedings of the 16th ACM SIGPLAN international conference on Functional programming
Automatic parallelization of recursive functions using quantifier elimination
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Constructing list homomorphisms from proofs
APLAS'11 Proceedings of the 9th Asian conference on Programming Languages and Systems
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Hi-index | 0.00 |
The third list-homomorphism theorem states that if a function is both foldr and foldl, it has a divide-and-conquer parallel implementation as well. In this paper, we develop a theory for obtaining such parallelization theorems. The key is a new proof of the third list-homomorphism theorem based on shortcut deforestation. The proof implies that there exists a divide-and-conquer parallel program of the form of h(x 'merge' y) = h1 x odot h2 y, where h is the subject of parallelization, merge is the operation of integrating independent substructures, h1 and h2 are computations applied to substructures, possibly in parallel, and odot merges the results calculated for substructures, if (i) h can be specified by two certain forms of iterative programs, and (ii) merge can be implemented by a function of a certain polymorphic type. Therefore, when requirement (ii) is fulfilled, h has a divide-and-conquer implementation if h has two certain forms of implementations. We show that our approach is applicable to structure-consuming operations by catamorphisms (folds), structure-generating operations by anamorphisms (unfolds), and their generalizations called hylomorphisms.