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
Handbook of logic in computer science (vol. 3)
Shortcut deforestation in calculational form
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Algebra of programming
Using circular programs to deforest in accumulating parameters
ASIA-PEPM '02 Proceedings of the ASIAN symposium on Partial evaluation and semantics-based program manipulation
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Introduction to Functional Programming
Introduction to Functional Programming
Proceedings of the IFIP TC2/WG2.1 Working Conference on Generic Programming
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
Free theorems in the presence of seq
Proceedings of the 31st ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Journal of Functional Programming
SCAM '06 Proceedings of the Sixth IEEE International Workshop on Source Code Analysis and Manipulation
Generating Software from Specifications
Generating Software from Specifications
Tools and libraries to model and manipulate circular programs
Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A shortcut fusion rule for circular program calculation
Haskell '07 Proceedings of the ACM SIGPLAN workshop on Haskell workshop
Semantics and pragmatics of new shortcut fusion rules
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Strictification of circular programs
Proceedings of the 20th ACM SIGPLAN workshop on Partial evaluation and program manipulation
Trends in Trends in Functional Programming 1999/2000 versus 2007/2008
Higher-Order and Symbolic Computation
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Hi-index | 0.00 |
Functional programs often combine separate parts using intermediate data structures for communicating results. These programs are modular, easier to understand and maintain, but suffer from inefficiencies due to the generation of those gluing data structures. To eliminate such redundant data structures, some program transformation techniques have been proposed. One such technique is shortcut fusion, and has been studied in the context of both pure and monadic functional programs. Recently, we have extended standard shortcut fusion: in addition to intermediate structures, the program parts may now communicate context information, and it still is possible to eliminate those structures. This is achieved by transforming the original function composition into a circular program. This new technique, however, has been studied in the context of purely functional programs only. In this paper, we propose an extension to this new form of fusion, but in the context of monadic programming: we derive monadic circular programs from strict ones, maintaining the global effects. Later, the circularities in the derived programs are traded by high-order definitions, using a well-known program transformation technique. We finally obtain very efficient deforested programs. An important feature of our extensions is that they can be uniformly defined for a wide class of data types and monads, using generic calculation rules.