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
Structural recursion as a query language
DBPL3 Proceedings of the third international workshop on Database programming languages : bulk types & persistent data: bulk types & persistent data
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
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
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
Foundations of programming languages
Foundations of programming languages
Algebra of programming
Functional programming with graphs
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
Tupling calculation eliminates multiple data traversals
ICFP '97 Proceedings of the second ACM SIGPLAN international conference on Functional programming
An Initial-Algebra Approach to Directed Acyclic Graphs
MPC '95 Mathematics of Program Construction
UnQL: a query language and algebra for semistructured data based on structural recursion
The VLDB Journal — The International Journal on Very Large Data Bases
Querying nested collections
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Efficient graph algorithms using lazy monolithic arrays
Journal of Functional Programming
Fundamentals of Algebraic Graph Transformation (Monographs in Theoretical Computer Science. An EATCS Series)
Structural Recursion as a Query Language on Lists and Ordered Trees
Theory of Computing Systems
Initial Algebra Semantics for Cyclic Sharing Structures
TLCA '09 Proceedings of the 9th International Conference on Typed Lambda Calculi and Applications
From Coalgebraic to Monoidal Traces
Electronic Notes in Theoretical Computer Science (ENTCS)
Bidirectionalizing graph transformations
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Program optimizations and transformations in calculation form
GTTSE'05 Proceedings of the 2005 international conference on Generative and Transformational Techniques in Software Engineering
KM3: a DSL for metamodel specification
FMOODS'06 Proceedings of the 8th IFIP WG 6.1 international conference on Formal Methods for Open Object-Based Distributed Systems
Marker-Directed optimization of UnCAL graph transformations
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Functional programming with structured graphs
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
The removal of weighted ε-transitions
CIAA'12 Proceedings of the 17th international conference on Implementation and Application of Automata
A parameterized graph transformation calculus for finite graphs with monadic branches
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
A parameterized graph transformation calculus for finite graphs with monadic branches
Proceedings of the 15th Symposium on Principles and Practice of Declarative Programming
Hi-index | 0.00 |
Structural recursion, in the form of, for example, folds on lists and catamorphisms on algebraic data structures including trees, plays an important role in functional programming, by providing a systematic way for constructing and manipulating functional programs. It is, however, a challenge to define structural recursions for graph data structures, the most ubiquitous sort of data in computing. This is because unlike lists and trees, graphs are essentially not inductive and cannot be formalized as an initial algebra in general. In this paper, we borrow from the database community the idea of structural recursion on how to restrict recursions on infinite unordered regular trees so that they preserve the finiteness property and become terminating, which are desirable properties for query languages. We propose a new graph transformation language called lambdaFG for transforming and querying ordered graphs, based on the well-defined bisimulation relation on ordered graphs with special epsilon-edges. The language lambdaFG is a higher order graph transformation language that extends the simply typed lambda calculus with graph constructors and more powerful structural recursions, which is extended for transformations on the sibling dimension. It not only gives a general framework for manipulating graphs and reasoning about them, but also provides a solution to the open problem of how to define a structural recursion on ordered graphs, with the help of the bisimilarity for ordered graphs with epsilon-edges.