Views: a way for pattern matching to cohabit with data abstraction
POPL '87 Proceedings of the 14th ACM SIGACT-SIGPLAN symposium on Principles of programming languages
Making data structures persistent
Journal of Computer and System Sciences - 18th Annual ACM Symposium on Theory of Computing (STOC), May 28-30, 1986
The definition of Standard ML
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Manipulating multilinked data structures in a pure functional language
Software—Practice & Experience
Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Structuring depth-first search algorithms in Haskell
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Warm fusion: deriving build-catas from recursive definitions
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Deriving structural hylomorphisms from recursive definitions
Proceedings of the first ACM SIGPLAN international conference on Functional programming
A new look at pattern matching in abstract data types
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
Fully Persistent Arrays (Extended Array)
WADS '89 Proceedings of the Workshop on Algorithms and Data Structures
WG '92 Proceedings of the 18th International Workshop on Graph-Theoretic Concepts in Computer Science
Graph Algorithms with a Functional Flavous
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Advanced Functional Programming, Second International School-Tutorial Text
IFL '96 Selected Papers from the 8th International Workshop on Implementation of Functional Languages
Homomorphisms and Promotability
Proceedings of the International Conference on Mathematics of Program Construction, 375th Anniversary of the Groningen University
MPC '95 Mathematics of Program Construction
An Initial-Algebra Approach to Directed Acyclic Graphs
MPC '95 Mathematics of Program Construction
Heterogeneous visual languages-integrating visual and textual programming
VL '95 Proceedings of the 11th International IEEE Symposium on Visual Languages
Categorical Programming with Abstract Data Types
AMAST '98 Proceedings of the 7th International Conference on Algebraic Methodology and Software Technology
Random Access to Abstract Data Types
AMAST '00 Proceedings of the 8th International Conference on Algebraic Methodology and Software Technology
Functional Logic Design Patterns
FLOPS '02 Proceedings of the 6th International Symposium on Functional and Logic Programming
Automated Benchmarking of Functional Data Structures
PADL '99 Proceedings of the First International Workshop on Practical Aspects of Declarative Languages
Iterative-free program analysis
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Inductive graphs and functional graph algorithms
Journal of Functional Programming
Inductive benchmarking for purely functional data structures
Journal of Functional Programming
Graph traversal and graph transformation
Theoretical Computer Science
A functional, successor list based version of warshall's algorithm with applications
RAMICS'11 Proceedings of the 12th international conference on Relational and algebraic methods in computer science
A functional framework for result checking
FLOPS'10 Proceedings of the 10th international conference on Functional and Logic Programming
Simple rectangle-based functional programs for computing reflexive-transitive closures
RAMiCS'12 Proceedings of the 13th international conference on Relational and Algebraic Methods in Computer Science
Using relations to develop a haskell program for computing maximum bipartite matchings
RAMiCS'12 Proceedings of the 13th international conference on Relational and Algebraic Methods in Computer Science
Structural recursion for querying ordered graphs
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Hi-index | 0.00 |
Graph algorithms expressed in functional languages often suffer from their inherited imperative, state-based style. In particular, this impedes formal program manipulation. We show how to model persistent graphs in functional languages by graph constructors. This provides a decompositional view of graphs which is very close to that of data types and leads to a "more fictional" formulation of graph algorithms. Graph constructors enable the definition of general fold operations for graphs. We present a promotion theorem for one of these folds that allows program fusion and the elimination of intermediate results. Fusion is not restricted to the elimination of tree-like structures, and we prove another theorem that facilitates the elimination of intermediate graphs. We describe an ML-implementation of persistent graphs which efficiently supports the presented fold operators. For example, depth-first-search expressed by a fold over a functional graph has the same complexity as the corresponding imperative algorithm.