MetaCart Sign in to MyCiteSeerX

Include Citations | Advanced Search | Help

Disambiguated Search | Include Citations | Advanced Search | Help

Synthesizing Object-Oriented and Functional Design to Promote Re-use (1998) [33 citations — 4 self]

Abstract:

Many problems require recursively specified types of data and a collection of tools that operate on those data. Over time, these problems evolve so that the programmer must extend the toolkit or extend the types and adjust the existing tools accordingly. Ideally,this should be done without modifying existing code. Unfortunately,theprevailing program design strategies do not support both forms of extensibility: functional programming accommodates the addition of tools, while object-oriented programming supports either adding new tools or extending the data set, but not both. In this paper, we present a composite design pattern that synthesizes the best of both approaches and in the process resolves the tension between the two design strategies. We also showhow this protocol suggests a new set of linguistic facilities for languages that support class systems.

Citations

3878 Design Patterns: Elements of Reusable ObjectOriented Software – Gamma, Helm, et al. - 1995
1447 The Java Language Specification – Gosling, Joy, et al. - 1996
1416 The definition of Standard ML – Milner, Tofte, et al. - 1989
1301 The C++ Programming Language – Stroustrup - 1985
1057 The C Programming Language – Kernighan, Ritchie - 1978
294 Pizza into Java: Translating theory into practice – Odersky, Wadler - 1997
211 Report on the programming language Haskell: a non-strict, purely functional language version 1.2 – Hudak, Jones, et al. - 1992
175 Monad transformers and modular interpreters – Liang, Hudak, et al. - 1995
157 The revised report on the algorithmic language Scheme – Clinger, Rees - 1986
84 Object-oriented programming versus abstract data types – Cook - 1990
82 The De nition of Standard ML – Milner, Tofte, et al. - 1990
78 Type inference for recursively constrained types and its application to OOP – Eifrig, Smith - 1995
78 The Java Language Speci cation – Gosling, Joy, et al. - 1996
72 Revised 4 report on the algorithmic language scheme – Rees, Clinger - 1991
62 2005, ‘PLT MzScheme: Language Manual – Flatt
62 Evolution of Object Behavior using Context Relations – Seiter, Palsberg, et al. - 1998
61 The essence of the Visitor pattern – Palsberg, Jay - 1997
59 Composite design patterns – Riehle - 1997
57 K.: Efficient Implementation of Adaptive Software – Palsberg, Xiao, et al. - 1995
49 Efficient inference of object types – Palsberg - 1995
47 Mixin modules – Duggan, Sourelis - 1996
47 DrScheme: A pedagogic programming environment for Scheme – Findler, Flanagan, et al. - 1997
41 Genericity in Java with Virtual Types – Thorup
28 Extensible denotational language specifications – Cartwright, Felleisen
27 Building interpreters by composing monads – Steele - 1994
26 On the interaction of object-oriented design patterns and programming languages – Baumgartner, Laufer, et al. - 1998
25 User-defined types and procedural data structures as complementary approaches to data abstraction – Reynolds - 1975
16 A Little Java, A Few Patterns – Felleisen, Friedman - 1998
14 vs. Ada vs. C++ vs. Awk vs. . . . An experiment in software prototyping productivity – Haskell - 1994
10 The translator pattern---external functionality with homomorphic mappings – Kuhne - 1997
6 Building interpreters by transforming stratified monads. Unpublished manuscript – Espinosa - 1994
5 Modular abstract interpreters. Unpublished manuscript – Findler - 1995
3 Extensible denotational language speci cations – Cartwright, Felleisen - 1994
2 Introduction aux objets. Unpublished manuscript, lecture notes for course de magistere, Ecole Normale Superieure – Remy - 1996
2 User-de ned types and procedural data structures as complementary approaches to data abstraction – Reynolds - 1975
2 Genericity inJava with virtual types – Thorup - 1997
1 Building interpreters by transforming strati ed monads. Unpublished manuscript – Espinosa - 1994
1 An experiment in software prototyping productivity – Awkvs
1 Flexible command interpreter: A pattern for an extensible and languageindependent interpreter system – Portner - 1995
1 An experiment in software prototyping productivity – vs - 1994
1 GenericityinJava with virtual types – Thorup - 1997