Jeremy Gibbons and Bruno C. d. S. Oliveira (2006). The Essence of the Iterator Pattern. Submitted for publication.
The Iterator pattern gives a clean interface for element-by-element access to a collection. Imperative iterations using the pattern have two simultaneous aspects: mapping and accumulating. Various functional iterations model one or other of these, but not both simultaneously. We argue that McBride and Paterson's idioms, and in particular the corresponding traverse operator, do exactly this, and therefore capture the essence of the Iterator pattern. We present some axioms for traversal, and illustrate with a simple example, the repmin problem.
The core of the solution is from McBride and Paterson's paper Applicative programming with effects, which wasn't posted to the home page before, but which was mentioned a couple of times in the LtU forum.
The context of this reseach is previous attempts to capture functional analogues of OOP design patterns:
Recently we have argued that pure datatype-generic maps are the functional analogue of the Iterator design pattern. It was partly while reflecting on that argument that we came to the (contradictory) position presented here.
Recent comments
31 weeks 3 days ago
31 weeks 3 days ago
31 weeks 3 days ago
1 year 1 week ago
1 year 5 weeks ago
1 year 7 weeks ago
1 year 7 weeks ago
1 year 10 weeks ago
1 year 14 weeks ago
1 year 14 weeks ago