The Common Lisp Object System (CLOS) is an extension of Common Lisp for object-oriented programming being designed as part of the ANSI X3J13 Common Lisp standardization process. This report describes an algebraic specification of the method combination and application component of CLOS. The specification is based on a draft of the standard presented to the ANSI committee in spring of 1987, and was done using an executable, typed functional programming language called Axis. The result suggests a logical mapping from the abstract data types and operations in the specification to the classes and methods which could become that part of the CLOS kernel (called the metaobject protocol) involved in method combination. In addition, the existence of a formal algebraic specification for CLOS allows the effects of changes in the language to be tested during the design phase, rather than during implementation. This is illustrated by showing how the language semantics change when thecall-next-method function is allowed to take arguments, an extension proposed in the draft standard. Standardization documents like the CLOS standard are usually written in a semi-natural language, but if they are accompanied by an additional formal specifiction during their generation, the probability of undetected or lately discovered errors in the design decreases, and the specification also provides an unambiguous source of reference for implementors.
This is a preview of subscription content, log in to check access.
Beierle, C., Olthoff, W. and Voss, A., “Towards a Formalization of the Software Development Process”, inSoftware Engineering 1986, D. Barnes and P. Brown, Eds., pp. 130–144, Peter Peregrinus, London, 1986.
Bobrow, D.,et al., “CommonLoops:, Merging Lisp and Object-Oriented Programming,”Proceedings of the 1st Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, SIGPLAN Notices, 21(11), pp. 17–29, 1986.
Bobrow, D.,et al., “Common Lisp Object System Specification,”Draft X3J13 Document 87-002, American National Standards Committee, Washington, DC, 1987.
Bobrow, D. and Kiczales, G., “Common Lisp Object System Specification 3. Meta Object Protocol,”Draft X3J13 Document 87-003, American National Standards Committee, Washington, DC, 1987.
Bobrow, D.,et al., “Common Lisp Object Specification,”Draft X3J13 Document 88-002, American National Standards Committee, Washington, DC, 1988.
Bobrow, D. and Kiczales, G., “Common Lisp Object System Specification 3. Meta Object Protocol,”Draft X3J13 Document 88-003, American National Standards Committee, Washington, DC, 1988.
Broy, M., Wirsing, M. and Pepper, P., “On the Algebraic Definition of Programming Languages,”ACM Transactions on Programming Languages and Systems,9(1), (1987), 54–99.
Burstall, R. M. and Goguen, J. A., “The Semantics of Clear, A Specification Language,”Technical Report CSR-65-80, University of Edinburgh, 1980.
Eisinger, N., Ohlbach, H. J., “The Markgraft Karl Refutation Procedure (MKRP)”,Proceedings 8th International Conference on Automated Deduction, J. Siekmann, Ed., pp. 681–682. Lecture Notes in Computer Science No. 230, Springer Verlag, 1986.
Futatsugi, K.et al., “Principles of OBJ2,”Proceedings of the 12th ACM Symposium on Principles of Programming Languages, pp. 52–66, 1986.
Gallimore, R., Coleman, D. and Dollin, C., “The Axis Specification Language,”Internal Technical Memorandum, Hewlett-Packard Laboratories, Bristol, 1987.
Goguen, J., “Parameterized Programming,”IEEE Transactions on Software Engineering, 10(5), (1984) 528–544.
Goguen, J., Thatcher, J. and Wagern, E., “An Initial Approach to the Specification, Correctness, and Implementation of Abstract Data Types,” inCurrent Trends in Programming Methodology IV: Data Structuring, R. Yeh, Ed., pp. 80–144, 1977.
Goldberg, A. and Robson, D.,Smalltalk-80: The Language and Its Implementation, Addison-Wesley, Reading, MA, 714 pp., 1983.
Guttag, J., Horning, J. and Wing, J., “Larch in Five Easy Pieces”,Digital Systems Research Center, Report No. 5, Palo Alto, CA, 1985.
Huet, G. and Oppen, D., “Equations and Rewrite Rules: A Survey”, inFormal Language Theory: Perspectives and Open Problems, R. Book, Ed., Academic Press, Orlando, FL, 1980.
Kamin, S., “Inheritance in Smalltalk-80: A Denotational Definition,”Proceedings of the 15th ACM Symposium on Principles of Programming Languages, pp. 80–87, 1988.
Moon, D., “Object-Oriented Programming with Flavors,”Proceedings of the 1st Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, SIGPLAN Notices, 21(11), (1986). 1–8.
Muchnick, S. and Pleban, U., “A Semantic Comparison of Lisp and Scheme,”Proceedings of the 1980 Lisp Conference, Stanford University, pp. 56–64, 1980.
Olthoff, W. and Kempf, J., “Formal Specification of the Common Lisp Object System Method Combination Component”,STL-88-24, Hewlett-Packard Laboratories, Palo Alto, CA, 1988.
Rees, J. and Clinger, W. (Ed.), “The Revised Revised Revised Report on the Algorithmic Language Scheme”,MIT AI Laboratory Report, 1986.
Schmidt, D.,Denotational Semantics: A Methodology for Language Development, Allyn and Bacon, Inc., Boston, 331 pp., 1986.
Wolczko, M., “Semantics of Smalltalk-80,”Proceedings of the European Conference on Object-Oriented Programming, pp. 119–134, June, 1987.
About this article
Cite this article
Olthoff, W., Kempf, J. An algebraic specification of method combination for the Common Lisp Object System. Lisp and Symbolic Computation 2, 115–152 (1989). https://doi.org/10.1007/BF01811536
- Programming Language
- Logical Mapping
- Design Phase
- Abstract Data
- Standardization Process