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
Typer inference builds a short cut to deforestation
Proceedings of the fourth ACM SIGPLAN international conference on Functional programming
Proceedings of the sixth 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
Short cut fusion: proved and improved
SAIG'01 Proceedings of the 2nd international conference on Semantics, applications, and implementation of program generation
Data parallel Haskell: a status report
Proceedings of the 2007 workshop on Declarative aspects of multicore programming
Putting declarative programming into the web: translating curry to javascript
Proceedings of the 9th ACM SIGPLAN international conference on Principles and practice of declarative programming
Stream fusion: from lists to streams to nothing at all
ICFP '07 Proceedings of the 12th ACM SIGPLAN international conference on Functional programming
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
The Reduceron: Widening the von Neumann Bottleneck for Graph Reduction Using an FPGA
Implementation and Application of Functional Languages
A Supercompiler for Core Haskell
Implementation and Application of Functional Languages
Huge Data But Small Programs: Visualization Design via Multiple Embedded DSLs
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Using Bloom Filters for Large Scale Gene Sequence Analysis in Haskell
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
PADL '09 Proceedings of the 11th International Symposium on Practical Aspects of Declarative Languages
Language embedding and optimization in mython
DLS '09 Proceedings of the 5th symposium on Dynamic languages
Regular, shape-polymorphic, parallel arrays in Haskell
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Stream fusion on haskell unicode strings
IFL'09 Proceedings of the 21st international conference on Implementation and application of functional languages
A library writer's guide to shortcut fusion
Proceedings of the 4th ACM symposium on Haskell
Proceedings of the 2012 Haskell Symposium
A T2 graph-reduction approach to fusion
Proceedings of the 2nd ACM SIGPLAN workshop on Functional high-performance computing
Adding structure to monoids: thus hopefully ending Haskell's string type confusion
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Type-changing rewriting and semantics-preserving transformation
Proceedings of the ACM SIGPLAN 2014 Workshop on Partial Evaluation and Program Manipulation
Hi-index | 0.00 |
The Haskell String type is notoriously inefficient. We introduce a new data type, ByteString, based on lazy lists of byte arrays, combining the speed benefits of strict arrays with lazy evaluation. Equational transformations based on term rewriting are used to deforest intermediate ByteStrings automatically. We describe novel fusion combinators with improved expressiveness and performance over previous functional array fusion strategies. A library for ByteStrings is implemented, providing a purely functional interface, which approaches the speed of low-level mutable arrays in C.