Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Lively linear Lisp: “look ma, no garbage!”
ACM SIGPLAN Notices
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
SIGPLAN '84 Proceedings of the 1984 SIGPLAN symposium on Compiler construction
POPL '02 Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
A type theory for memory allocation and data layout
POPL '03 Proceedings of the 30th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Deforestation: Transforming Programs to Eliminate Trees
ESOP '88 Proceedings of the 2nd European Symposium on Programming
EDBT '02 Proceedings of the Worshops XMLDM, MDDE, and YRWS on XML-Based Data Management and Multimedia Engineering-Revised Papers
XDuce: A statically typed XML processing language
ACM Transactions on Internet Technology (TOIT)
The XML benchmark project
Stream processing of XPath queries with predicates
Proceedings of the 2003 ACM SIGMOD international conference on Management of data
Ordered linear logic and applications
Ordered linear logic and applications
CDuce: an XML-centric general-purpose language
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Attribute grammars for unranked trees as a query language for structured documents
Journal of Computer and System Sciences
Buffering in query evaluation over XML streams
Proceedings of the twenty-fourth ACM SIGMOD-SIGACT-SIGART symposium on Principles of database systems
A transducer-based XML query processor
VLDB '02 Proceedings of the 28th international conference on Very Large Data Bases
LOPSTR'05 Proceedings of the 15th international conference on Logic Based Program Synthesis and Transformation
A pushdown machine for recursive XML processing
APLAS'06 Proceedings of the 4th Asian conference on Programming Languages and Systems
Substructural type systems for program analysis
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Hi-index | 0.00 |
There are two ways to write a program for manipulating tree-structured data such as XML documents: One is to write a tree-processing program focusing on the logical structure of the data and the other is to write a stream-processing program focusing on the physical structure. While tree-processing programs are easier to write than stream-processing programs, tree-processing programs are less efficient in memory usage since they use trees as intermediate data. Our aim is to establish a method for automatically translating a tree-processing program to a stream-processing one in order to take the best of both worlds. We first define a programming language for processing binary trees and a type system based on ordered linear type, and show that every well-typed program can be translated to an equivalent stream-processing program. We then extend the language and the type system to deal with XML documents. We have implemented an XML stream processor generator based on our algorithm, and obtained promising experimental results.