Abstract
This paper introduces interruptible iterators, a language feature that makes expressive iteration abstractions much easier to implement. Iteration abstractions are valuable for software design, as shown by their frequent use in well-designed data structure libraries such as the Java Collections Framework. While Java iterators support iteration abstraction well from the standpoint of client code, they are awkward to implement correctly and efficiently, especially if the iterator needs to support imperative update of the underlying collection, such as removing the current element. Some languages, such as CLU and C# 2.0, support iteration through a limited coroutine mechanism, but these mechanisms do not support imperative updates. Interruptible iterators are more powerful coroutines in which the loop body is able to interrupt the iterator with requests to perform updates. Interrupts are similar to exceptions, but propagate differently and have resumption semantics. Interruptible iterators have been implemented as part of the JMatch programming language, an extended version of Java. A JMatch reimplementation of the Java Collections Framework shows that implementations can be made substantially shorter and simpler; performance results show that this language mechanism can also be implemented efficiently.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference29 articles.
1. Chad Fowler Dave Thomas and Andy Hunt. Programming Ruby: The Pragmatic Programmers' Guide. The Pragmatic Programmers 2nd edition 2004. ISBN 0-974-51405-5. Chad Fowler Dave Thomas and Andy Hunt. Programming Ruby: The Pragmatic Programmers' Guide. The Pragmatic Programmers 2nd edition 2004. ISBN 0-974-51405-5.
2. Generators in Icon
3. James Gosling Bill Joy Guy Steele and Gilad Bracha. The Java Language Specification. Addison Wesley 2nd edition 2000. ISBN 0-201-31008-2. James Gosling Bill Joy Guy Steele and Gilad Bracha. The Java Language Specification. Addison Wesley 2nd edition 2000. ISBN 0-201-31008-2.
4. Exception handling design issues
Cited by
6 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Handling bidirectional control flow;Proceedings of the ACM on Programming Languages;2020-11-13
2. Embedding Concurrent Generators;2016 IEEE International Parallel and Distributed Processing Symposium Workshops (IPDPSW);2016-05
3. Accelerating iterators in optimizing AST interpreters;ACM SIGPLAN Notices;2014-12-31
4. Reconciling exhaustive pattern matching with objects;ACM SIGPLAN Notices;2013-06-23
5. Logic Engines as Interactors;Logic Programming;2008