Revised report on the algorithmic language scheme
ACM SIGPLAN Notices
Structure and interpretation of computer programs
Structure and interpretation of computer programs
Control flow analysis in scheme
PLDI '88 Proceedings of the ACM SIGPLAN 1988 conference on Programming Language design and Implementation
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
How much non-strictness do lenient programs require?
FPCA '95 Proceedings of the seventh international conference on Functional programming languages and computer architecture
Purely functional data structures
Purely functional data structures
Cheap eagerness: speculative evaluation in a lazy functional language
ICFP '00 Proceedings of the fifth ACM SIGPLAN international conference on Functional programming
Eager Haskell: resource-bounded execution yields efficient iteration
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Optimistic evaluation: an adaptive evaluation strategy for non-strict programs
ICFP '03 Proceedings of the eighth ACM SIGPLAN international conference on Functional programming
Lazy Contract Checking for Immutable Data Structures
Implementation and Application of Functional Languages
Experience report: growing programming languages for beginning students
Proceedings of the 15th ACM SIGPLAN international conference on Functional programming
Principles of Program Analysis
Principles of Program Analysis
Evaluating the design of the R language: objects and functions for data analysis
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Proceedings of the 41st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages
Hi-index | 0.00 |
Lazy functional programming has many benefits that strict functional languages can simulate via lazy data constructors. In recognition, ML, Scheme, and other strict functional languages have supported lazy stream programming with delaytt and forcett for several decades. Unfortunately, the manual insertion of delaytt and forcett can be tedious and error-prone. We present a semantics-based refactoring that helps strict programmers manage manual lazy programming. The refactoring uses a static analysis to identify where additional delaytts and forcetts might be needed to achieve the desired simplification and performance benefits, once the programmer has added the initial lazy data constructors. The paper presents a correctness argument for the underlying transformations and some preliminary experiences with a prototype tool implementation.