|
ABSTRACT
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.
REFERENCES
Note: OCR errors may be found in this Reference List extracted from the full text article. ACM has opted to expose the complete List rather than only correct and linked references.
| |
1
|
A. Alexandrescu. Modern C++ Design. Addison-Wesley, 2001.
|
| |
2
|
M.H. Austern. Generic Programming and the STL. Addison-Wesley, 1999.
|
| |
3
|
R.C. Backhouse, P. Jansson, J. Jeuring, and L.G.L.T. Meertens. Generic programming: An introduction. In Advanced Functional Programming, volume 1608 of Lecture Notes in Computer Science, pages 28--115, 1998.
|
| |
4
|
|
| |
5
|
|
| |
6
|
R. Bird, O. de Moor, and P. Hoogendijk. Generic functional programming with types and relations. Journal of Functional Programming, 6(1):1--28, 1996.
|
 |
7
|
|
| |
8
|
K. Claessen and J. Hughes. Specification-based testing with QuickCheck. In Gibbons and de Moor {20}, pages 17--40.
|
| |
9
|
G. Dos Reis and J.Järvi. What is generic programming? In Library-Centric Software Design, 2005. OOPSLA workshop.
|
| |
10
|
M.M. Fokkinga and E. Meijer. Program calculation properties of continuous algebras. Technical Report CS-R9104, CWI, Amsterdam, Jan. 1991.
|
| |
11
|
|
 |
12
|
Ronald Garcia , Jaakko Jarvi , Andrew Lumsdaine , Jeremy G. Siek , Jeremiah Willcock, A comparative study of language support for generic programming, Proceedings of the 18th annual ACM SIGPLAN conference on Object-oriented programing, systems, languages, and applications, October 26-30, 2003, Anaheim, California, USA
|
| |
13
|
|
| |
14
|
J. Gibbons. Origami programming. In Gibbons and de Moor {20}, pages 41--60.
|
| |
15
|
J. Gibbons. Design patterns as higher-order datatype-generic programs. http://2005.ecoop.org/8.html, June 2005. Tutorial presented at ECOOP.
|
| |
16
|
J. Gibbons. Design patterns as higher-order datatype-generic programs. http://www.oopsla.org/2005/ShowEvent.do?id=121, Oct. 2005. Tutorial presented at OOPSLA.
|
| |
17
|
J. Gibbons. Datatype-generic programming. In Spring School on Datatype-Generic Programming. Springer-Verlag, 2006. To appear.
|
| |
18
|
J. Gibbons. Design patterns as higher-order datatype-generic programs (full version). http://www.comlab.ox.ac.uk/jeremy.gibbons/publications/#hodgp, June 2006.
|
| |
19
|
J. Gibbons and B. C. d. S. Oliveira. The essence of the Iterator pattern. In T. Uustalu and C. McBride, editors, Mathematically-Structured Functional Programming, 2006.
|
| |
20
|
J. Gibbons and O. de Moor, editors. The Fun of Programming. Cornerstones in Computing. Palgrave, 2003. ISBN 1-4039-0772-2.
|
 |
21
|
|
 |
22
|
|
| |
23
|
|
| |
24
|
|
| |
25
|
R. Hinze and J. Jeuring. Generic Haskell: Practice and theory. In R. Backhouse and J. Gibbons, editors, Summer School on Generic Programming, volume 2793 of Lecture Notes in Computer Science, pages 1--56. Springer-Verlag, 2003.
|
| |
26
|
R. Hinze and S. Peyton Jones. Derivable type classes. In G. Hutton, editor, Haskell Workshop, volume 41.1 of Electronic Notes in Theoretical Computer Science. Elsevier Science, Aug. 2000.
|
| |
27
|
|
| |
28
|
|
 |
29
|
|
| |
30
|
|
| |
31
|
|
| |
32
|
G. Kiczales, J. Lamping, A. Menhdhekar, C. Maeda, C. Lopes, J.-M. Loingtier, and J. Irwin. Aspect-oriented programming. In M. Akşit and S. Matsuoka, editors, European Conference on Object-Oriented Programming, volume 1241 of Lecture Notes in Computer Science, pages 220--242. Springer-Verlag, Berlin, Heidelberg, and New York, 1997.
|
| |
33
|
A. Löh. Exploring Generic Haskell. PhD thesis, Utrecht University, 2004.
|
| |
34
|
|
| |
35
|
C. McBride and R. Paterson. Applicative programming with effects. Journal of Functional Programming, To appear.
|
| |
36
|
|
| |
37
|
|
| |
38
|
P. Norvig. Design patterns in dynamic programming. In Object World, Boston, MA, May 1996. Tutorial slides at http://norvig.com/design-patterns/.
|
 |
39
|
|
| |
40
|
|
| |
41
|
|
| |
42
|
S. Peyton Jones. The Haskell 98 Language and Libraries: The Revised Report. Cambridge University Press, 2003.
|
| |
43
|
G. T. Sullivan. Advanced programming language features for executable design patterns: Better patterns through reflection. Artificial Intelligence Laboratory Memo AIM-2002-005, Artificial Intelligence Lab, MIT, Mar. 2002.
|
| |
44
|
The Programatica Team. Programatica tools for certifiable, auditable development of high-assurance systems in Haskell. In High Confidence Software and Systems Conference. National Security Agency, April 2003.
|
 |
45
|
|
| |
46
|
|
| |
47
|
P. Wadler. Monads for functional programming. In M. Broy, editor, Program Design Calculi: Proceedings of the Marktoberdorf Summer School, 1992.
|
| |
48
|
P. Wadler. The expression problem. Posting to java-genericity mailing list, 12th Nov 1998.
|
| |
49
|
|
|