Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
The C programming language
Notions of computation and monads
Information and Computation
Using Program Slicing in Software Maintenance
IEEE Transactions on Software Engineering
Functional programming with bananas, lenses, envelopes and barbed wire
Proceedings of the 5th ACM conference on Functional programming languages and computer architecture
Imperative functional programming
POPL '93 Proceedings of the 20th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Applicative functors and fully transparent higher-order modules
POPL '95 Proceedings of the 22nd ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
Polytypic data conversion programs
Science of Computer Programming
The Functional Imperative: Shape!
ESOP '98 Proceedings of the 7th European Symposium on Programming: Programming Languages and Systems
PLILP '96 Proceedings of the 8th International Symposium on Programming Languages: Implementations, Logics, and Programs
Calculating Functional Programs
Revised Lectures from the International Summer School and Workshop on Algebraic and Coalgebraic Methods in the Mathematics of Program Construction
Proceedings of the 1992 Glasgow Workshop on Functional Programming
Functional Programming with Overloading and Higher-Order Polymorphism
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
Merging Monads and Folds for Functional Programming
Advanced Functional Programming, First International Spring School on Advanced Functional Programming Techniques-Tutorial Text
MPC '98 Proceedings of the Mathematics of Program Construction
Reverse Program Calculation Supported by Code Slicing
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Journal of Functional Programming
Design patterns as higher-order datatype-generic programs
Proceedings of the 2006 ACM SIGPLAN workshop on Generic programming
Applicative programming with effects
Journal of Functional Programming
Combining datatypes and effects
AFP'04 Proceedings of the 5th international conference on Advanced Functional Programming
Fission for program comprehension
MPC'06 Proceedings of the 8th international conference on Mathematics of Program Construction
The Essence of the Iterator Pattern
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Proceedings of the ACM SIGPLAN workshop on Generic programming
The visitor pattern as a reusable, generic, type-safe component
Proceedings of the 23rd ACM SIGPLAN conference on Object-oriented programming systems languages and applications
Scala for generic programmers: Comparing haskell and scala support for generic programming
Journal of Functional Programming
Logic Java: combining object-oriented and logic programming
WFLP'11 Proceedings of the 20th international conference on Functional and constraint logic programming
Termination combinators forever
Proceedings of the 4th ACM symposium on Haskell
Accelerating physics in large, continuous virtual environments
Concurrency and Computation: Practice & Experience
TFP'11 Proceedings of the 12th international conference on Trends in Functional Programming
Functional programming with structured graphs
Proceedings of the 17th ACM SIGPLAN international conference on Functional programming
Three complementary approaches to bidirectional programming
SSGIP'10 Proceedings of the 2010 international spring school conference on Generic and Indexed Programming
Proceedings of the 18th ACM SIGPLAN international conference on Functional programming
Understanding idiomatic traversals backwards and forwards
Proceedings of the 2013 ACM SIGPLAN symposium on Haskell
Hi-index | 0.00 |
The Iterator pattern gives a clean interface for element-by-element access to a collection, independent of the collection's shape. Imperative iterations using the pattern have two simultaneous aspects: mapping and accumulating. Various existing functional models of iteration capture one or other of these aspects, but not both simultaneously. We argue that C. McBride and R. Paterson's applicative functors (Applicative programming with effects, J. Funct. Program., 18 (1): 1–13, 2008), and in particular the corresponding traverse operator, do exactly this, and therefore capture the essence of the Iterator pattern. Moreover, they do so in a way that nicely supports modular programming. We present some axioms for traversal, discuss modularity concerns and illustrate with a simple example, the wordcount problem.