Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Deforestation: transforming programs to eliminate trees
Proceedings of the Second European Symposium on Programming
Data structures and program transformation
Science of Computer Programming
FPCA '89 Proceedings of the fourth international conference on Functional programming languages and computer architecture
FPCA '93 Proceedings of the conference on Functional programming languages and computer architecture
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
ESOP '94 Selected papers of ESOP '94, the 5th European symposium on Programming
ML for the working programmer (2nd ed.)
ML for the working programmer (2nd ed.)
Algebra of programming
PolyP—a polytypic programming language extension
Proceedings of the 24th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
The Definition of Standard ML
A lightweight implementation of generics and dynamics
Proceedings of the 2002 ACM SIGPLAN workshop on Haskell
Introduction to Functional Programming
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
The Essence of the Visitor Pattern
COMPSAC '98 Proceedings of the 22nd International Computer Software and Applications Conference
Polytypic Values Possess Polykinded Types
MPC '00 Proceedings of the 5th International Conference on Mathematics of Program Construction
Calculating functional programs
Algebraic and coalgebraic methods in the mathematics of program construction
How to Solve the Reuse Problem? Functional Programming
ICSR '98 Proceedings of the 5th International Conference on Software Reuse
A comparative study of language support for generic programming
OOPSLA '03 Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
Journal of Functional Programming
TypeCase: a design pattern for type-indexed functions
Proceedings of the 2005 ACM SIGPLAN workshop on Haskell
Journal of Functional Programming
Applicative programming with effects
Journal of Functional Programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
The Essence of the Iterator Pattern
MSFP'06 Proceedings of the 2006 international conference on Mathematically Structured Functional Programming
Practical generic programming in OCaml
ML '07 Proceedings of the 2007 workshop on Workshop on ML
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
The essence of the iterator pattern
Journal of Functional Programming
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Comparing approaches to generic programming in Haskell
SSDGP'06 Proceedings of the 2006 international conference on Datatype-generic programming
Scala for generic programmers: Comparing haskell and scala support for generic programming
Journal of Functional Programming
A bottom-up approach to understand functional programs
Proceedings of The Fourth International C* Conference on Computer Science and Software Engineering
Design pattern solutions as explicit entities in component-based software development
Proceedings of the 16th international workshop on Component-oriented programming
Extensibility for the masses: practical extensibility with object algebras
ECOOP'12 Proceedings of the 26th European conference on Object-Oriented Programming
Hi-index | 0.00 |
Design patterns are reusable abstractions in object-oriented software. However, using current mainstream programming languages, these elements can only be expressed extra-linguistically: as prose, pictures, and prototypes. We believe that this is not inherent in the patterns themselves, but evidence of a lack of expressivity in the languages of today. We expect that, in the languages of the future, the code parts of design patterns will be expressible as reusable library components. Indeed, we claim that the languages of tomorrow will suffice; the future is not far away. All that is needed, in addition to commonly-available features, are higher-order and datatype-generic constructs; these features are already or nearly available now. We argue the case by presenting higher-order datatype-generic programs capturing ORIGAMI, a small suite of patterns for recursive data structures.