Abstract:
Object references in object-oriented languages suffer from their pointer heritage. In this paper we discourage the use of a single magic value, shared among all reference types, to denote a nonreferencing state. The advantages of void values, which include uniform treatment of void and nonvoid data, provision of default-behavior, termination of recursive definitions, and gracefully dealing with error situations are presented in pattern form. We then investigate the impact of the Void Value pattern for language design, extending the applications to implicit creation, abstract method execution, and simplified module usage. Finally we point out related mechanisms like pattern matching in functional programming languages and compare void values to nullcases. 1
Citations
|
1268
|
The C++ Programming Language
– Stroustrup
- 1997
|
|
1127
|
SmallTalk 80: The Language and its Implementation
– Goldberg, Robson
- 1983
|
|
1015
|
The C Programming Language
– Kernighan, Ritchie
|
|
628
|
Eiffel: The Language
– Meyer
- 1991
|
|
483
|
Self: the power of simplicity, in
– Ungar, Smith
- 1987
|
|
234
|
Precise interprocedural dataflow analysis via graph reachability
– Reps, Sagiv, et al.
- 1995
|
|
197
|
Dimensions of object-based language design
– Wegner
- 1987
|
|
107
|
Typestate: A programming language concept for enhancing software reliability
– Strom, Yemini
- 1986
|
|
96
|
Views: A way for pattern matching to cohabit with data abstraction
– Wadler
- 1987
|
|
87
|
A critique of Standard ML
– Appel
- 1993
|
|
82
|
Object-oriented programming versus abstract data types
– COOK
- 1991
|
|
42
|
Engineering a Programming Language: The Type and Class System of Sather
– Szypersky, Omohundro, et al.
- 1993
|
|
29
|
Smart pointers: They're smart, but they're not pointers
– Edelson
- 1992
|
|
25
|
Pattern Matching with Abstract Data Types
– Burton, Cameron
- 1993
|
|
22
|
A framework for higher-order functions in C
– Läufer
- 1995
|
|
22
|
Values and objects in programming languages
– MacLennan
- 1982
|
|
21
|
The checks pattern language of information integrity
– Cunningham
- 1995
|
|
18
|
Uniting Functional and Object-Oriented Programming
– Sargeant
- 1993
|
|
6
|
Parameterization versus Inheritance
– Kuhne
- 1995
|
|
5
|
Reusability Through SelfEncapsulation
– Auer
- 1995
|
|
5
|
Modeling with objects and values: Issues and perspectives
– Eckert, Kempe
- 1995
|
|
3
|
Introduction to Functional Programming. C.A.R. Hoare Series
– Bird, Wadler
- 1988
|
|
3
|
UFO: Language evolution and consequences of state
– Sargeant, Hooton, et al.
- 1995
|
|
1
|
On the interaction of object11 oriented design patterns and programming languages
– Baumgartner, Laufer, et al.
- 1996
|