Designing families of data types using exemplars
ACM Transactions on Programming Languages and Systems (TOPLAS)
Efficient high-level iteration with accumulators
ACM Transactions on Programming Languages and Systems (TOPLAS)
Parameterization: a case study
ACM SIGAda Ada Letters
The Effect of Data Abstraction on Loop Programming Techniques
IEEE Transactions on Software Engineering
IEEE Transactions on Software Engineering
Copying and Swapping: Influences on the Design of Reusable Software Components
IEEE Transactions on Software Engineering
Advances in computers
The property vector specification of a multiset iterator
ICSE '92 Proceedings of the 14th international conference on Software engineering
Software component design-for-reuse: a language-independent discipline applied to ADA
Software component design-for-reuse: a language-independent discipline applied to ADA
A formal model of software subsystems
A formal model of software subsystems
Abstraction and verification in Alphard: defining and specifying iteration and generators
Communications of the ACM
Communications of the ACM
Software Component with ADA
Modular Verification of Data Abstractions with Shared Realizations
IEEE Transactions on Software Engineering
Experience report: using RESOLVE/C++ for commercial software
SIGSOFT '00/FSE-8 Proceedings of the 8th ACM SIGSOFT international symposium on Foundations of software engineering: twenty-first century applications
Recasting Algorithms to Encourage Reuse
IEEE Software
SAVCBS 2006 challenge: specification of iterators
Proceedings of the 2006 conference on Specification and verification of component-based systems
Incremental Benchmarks for Software Verification Tools and Techniques
VSTTE '08 Proceedings of the 2nd international conference on Verified Software: Theories, Tools, Experiments
Traditional assignment considered harmful
Proceedings of the 24th ACM SIGPLAN conference companion on Object oriented programming systems languages and applications
Mechanized verification with sharing
ICTAC'10 Proceedings of the 7th International colloquium conference on Theoretical aspects of computing
Hi-index | 0.00 |
How should iterators be abstracted and encapsulated in modern imperative languages? We consider the combined impact of several factors on this question: the need for a common interface model for user defined iterator abstractions, the importance of formal methods in specifying such a model, and problems involved in modular correctness proofs of iterator implementations and clients. A series of iterator designs illustrates the advantages of the swapping paradigm over the traditional copying paradigm. Specifically, swapping based designs admit more efficient implementations while offering relatively straightforward formal specifications and the potential for modular reasoning about program behavior. The final proposed design schema is a common interface model for an iterator for any generic collection.