Lambda lifting: transforming programs to recursive equations
Proc. of a conference on Functional programming languages and computer architecture
Deforestation: transforming programs to eliminate trees
Proceedings of the Second 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
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
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
Deriving structural hylomorphisms from recursive definitions
Proceedings of the first ACM SIGPLAN international conference on Functional programming
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
A transformation-based optimiser for Haskell
Science of Computer Programming - Special issue on the 6th European symposium on programming
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Shortcut fusion for accumulating parameters & zip-like functions
Proceedings of the seventh ACM SIGPLAN international conference on Functional programming
Parametricity and Unboxing with Unpointed Types
ESOP '96 Proceedings of the 6th European Symposium on Programming Languages and Systems
The nofib Benchmark Suite of Haskell Programs
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Short cut fusion: proved and improved
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
PADL'07 Proceedings of the 9th international conference on Practical Aspects of Declarative Languages
Call-pattern specialisation for Haskell programs
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
Proving correctness via free theorems: the case of the destroy/build-rule
PEPM '08 Proceedings of the 2008 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation
A lightweight approach to datatype-generic rewriting
Proceedings of the ACM SIGPLAN workshop on Generic programming
A Supercompiler for Core Haskell
Implementation and Application of Functional Languages
MPC '08 Proceedings of the 9th international conference on Mathematics of Program Construction
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
The worker/wrapper transformation
Journal of Functional Programming
Causal commutative arrows and their optimization
Proceedings of the 14th ACM SIGPLAN international conference on Functional programming
Losing functions without gaining data: another look at defunctionalisation
Proceedings of the 2nd ACM SIGPLAN symposium on Haskell
Language embedding and optimization in mython
DLS '09 Proceedings of the 5th symposium on Dynamic languages
Semantics and pragmatics of new shortcut fusion rules
FLOPS'08 Proceedings of the 9th international conference on Functional and logic programming
Proceedings of the third ACM Haskell symposium on Haskell
Supercompilation by evaluation
Proceedings of the third ACM Haskell symposium on Haskell
Functional pearl: every bit counts
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Regular, shape-polymorphic, parallel arrays in Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Simple optimizations for an applicative array language for graphics processors
Proceedings of the sixth workshop on Declarative aspects of multicore programming
Stream fusion on haskell unicode strings
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
Exploiting algebra/coalgebra duality for program fusion extensions
Proceedings of the Eleventh Workshop on Language Descriptions, Tools and Applications
Steno: automatic optimization of declarative queries
Proceedings of the 32nd ACM SIGPLAN conference on Programming language design and implementation
A library writer's guide to shortcut fusion
Proceedings of the 4th ACM symposium on Haskell
Efficient parallel stencil convolution in Haskell
Proceedings of the 4th ACM symposium on Haskell
IFL'10 Proceedings of the 22nd international conference on Implementation and application of functional languages
Journal of Functional Programming - Dedicated to ICFP 2009
Dynamic symbolic computation for domain-specific language implementation
LOPSTR'11 Proceedings of the 21st international conference on Logic-Based Program Synthesis and Transformation
Proceedings of the 2012 Haskell Symposium
Sneaking around concatMap: efficient combinators for dynamic programming
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Work efficient higher-order vectorisation
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Riposte: a trace-driven compiler and parallel VM for vector code in R
Proceedings of the 21st international conference on Parallel architectures and compilation techniques
Molecule: using monadic and streaming I/O to compose process networks on the JVM
Proceedings of the ACM international conference on Object oriented programming systems languages and applications
Challenges for a trace-based just-in-time compiler for haskell
IFL'11 Proceedings of the 23rd international conference on Implementation and Application of Functional Languages
POPL '13 Proceedings of the 40th annual ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Optimising purely functional GPU programs
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Exploiting vector instructions with generalized stream fusio
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Data flow fusion with series expressions in Haskell
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Causality of optimized Haskell: what is burning our cycles?
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Embrace, defend, extend: a methodology for embedding preexisting DSLs
Proceedings of the 1st annual workshop on Functional programming concepts in domain-specific languages
Adjoint folds and unfolds-An extended study
Science of Computer Programming
Science of Computer Programming
A catalog of stream processing optimizations
ACM Computing Surveys (CSUR)
The HERMIT in the stream: fusing stream fusion's concatMap
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Proceedings of the 19th ACM SIGPLAN symposium on Principles and practice of parallel programming
Hi-index | 0.00 |
This paper presents an automatic deforestation system, stream fusion, based on equational transformations, that fuses a wider range of functions than existing short-cut fusion systems. In particular, stream fusion is able to fuse zips, left folds and functions over nested lists, including list comprehensions. A distinguishing feature of the framework is its simplicity: by transforming list functions to expose their structure, intermediate values are eliminated by general purpose compiler optimisations. We have reimplemented the Haskell standard List library on top of our framework, providing stream fusion for Haskell lists. By allowing a wider range of functions to fuse, we see an increase in the number of occurrences of fusion in typical Haskell programs. We present benchmarks documenting time and space improvements.