Abstraction and specification in program development
Abstraction and specification in program development
Structure and interpretation of computer programs
Structure and interpretation of computer programs
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
An introduction to functional programming
An introduction to functional programming
Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Iterators: signs of weakness in object-oriented languages
ACM SIGPLAN OOPS Messenger
Discovering Smalltalk
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Parallel skeletons for structured composition
PPOPP '95 Proceedings of the fifth ACM SIGPLAN symposium on Principles and practice of parallel programming
Discovering patterns in existing applications
Pattern languages of program design
Object-oriented programming in the BETA programming language
Object-oriented programming in the BETA programming language
Algorithms, data structures, and problem solving with C++
Algorithms, data structures, and problem solving with C++
Pattern languages of program design 3
Risks to the public in computer systems
ACM SIGSOFT Software Engineering Notes
Multiparadigm Programming in Leda
Multiparadigm Programming in Leda
Object-Oriented Software Construction
Object-Oriented Software Construction
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Collection Types and Implementations in Object-Oriented Software Libraries
TOOLS '98 Proceedings of the Technology of Object-Oriented Languages and Systems
A Method for Analyzing Loop Programs
IEEE Transactions on Software Engineering
The Essence of the Iterator Pattern
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Hi-index | 0.00 |
Although it is acknowledged that internal iterators are easier and safer to use than conventional external iterators, it is commonly assumed that they are not applicable in languages without builtin support for closures and that they are less flexible than external iterators. We present an iteration framework that uses objects to emulate closures, separates structure exploration and data consumption, and generalizes on folding, thereby invalidating both the above statements. Our proposed "transfold" scheme allows processing one or more data structures simultaneously without exposing structure representations and without writing explicit loops. We show that the use of two functional concepts (function parameterization and lazy evaluation) within an object-oriented language allows combining the safety and economic usage of internal iteration with the flexibility and client control of external iteration. Sample code is provided using the statically typed Eiffel language.