Advertisement

LISP and Symbolic Computation

, Volume 2, Issue 2, pp 115–152 | Cite as

An algebraic specification of method combination for the Common Lisp Object System

  • Walter Olthoff
  • James Kempf
Article

Abstract

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.

Keywords

Programming Language Logical Mapping Design Phase Abstract Data Standardization Process 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. 1.
    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.Google Scholar
  2. 2.
    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.Google Scholar
  3. 3.
    Bobrow, D.,et al., “Common Lisp Object System Specification,”Draft X3J13 Document 87-002, American National Standards Committee, Washington, DC, 1987.Google Scholar
  4. 4.
    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.Google Scholar
  5. 5.
    Bobrow, D.,et al., “Common Lisp Object Specification,”Draft X3J13 Document 88-002, American National Standards Committee, Washington, DC, 1988.Google Scholar
  6. 6.
    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.Google Scholar
  7. 7.
    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.Google Scholar
  8. 8.
    Burstall, R. M. and Goguen, J. A., “The Semantics of Clear, A Specification Language,”Technical Report CSR-65-80, University of Edinburgh, 1980.Google Scholar
  9. 9.
    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.Google Scholar
  10. 10.
    Futatsugi, K.et al., “Principles of OBJ2,”Proceedings of the 12th ACM Symposium on Principles of Programming Languages, pp. 52–66, 1986.Google Scholar
  11. 11.
    Gallimore, R., Coleman, D. and Dollin, C., “The Axis Specification Language,”Internal Technical Memorandum, Hewlett-Packard Laboratories, Bristol, 1987.Google Scholar
  12. 12.
    Goguen, J., “Parameterized Programming,”IEEE Transactions on Software Engineering, 10(5), (1984) 528–544.Google Scholar
  13. 13.
    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.Google Scholar
  14. 14.
    Goldberg, A. and Robson, D.,Smalltalk-80: The Language and Its Implementation, Addison-Wesley, Reading, MA, 714 pp., 1983.Google Scholar
  15. 15.
    Guttag, J., Horning, J. and Wing, J., “Larch in Five Easy Pieces”,Digital Systems Research Center, Report No. 5, Palo Alto, CA, 1985.Google Scholar
  16. 16.
    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.Google Scholar
  17. 17.
    Kamin, S., “Inheritance in Smalltalk-80: A Denotational Definition,”Proceedings of the 15th ACM Symposium on Principles of Programming Languages, pp. 80–87, 1988.Google Scholar
  18. 18.
    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.Google Scholar
  19. 19.
    Muchnick, S. and Pleban, U., “A Semantic Comparison of Lisp and Scheme,”Proceedings of the 1980 Lisp Conference, Stanford University, pp. 56–64, 1980.Google Scholar
  20. 20.
    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.Google Scholar
  21. 21.
    Rees, J. and Clinger, W. (Ed.), “The Revised Revised Revised Report on the Algorithmic Language Scheme”,MIT AI Laboratory Report, 1986.Google Scholar
  22. 22.
    Schmidt, D.,Denotational Semantics: A Methodology for Language Development, Allyn and Bacon, Inc., Boston, 331 pp., 1986.Google Scholar
  23. 23.
    Wolczko, M., “Semantics of Smalltalk-80,”Proceedings of the European Conference on Object-Oriented Programming, pp. 119–134, June, 1987.Google Scholar

Copyright information

© Kluwer Academic Publishers 1989

Authors and Affiliations

  • Walter Olthoff
    • 1
  • James Kempf
    • 2
  1. 1.Hewlett-Packard LaboratoriesPalo Alto
  2. 2.Sun MicrosystemsMountain View

Personalised recommendations