Binary Methods Programming: the CLOS Perspective (extended version)

From LRDE

Revision as of 16:26, 29 January 2019 by Bot (talk | contribs)

Abstract

Implementing binary methods in traditional object-oriented languages is difficult: numerous problems arise regarding the relationship between types and classes in the context of inheritance, or the need for privileged access to the internal representation of objects. Most of these problems occur in the context of statically typed languages that lack multi-methods (polymorphism on multiple arguments). The purpose of this paper is twofold: first, we show why some of these problems are either non-issues, or easily solved in Common Lisp. Then, we demonstrate how the Common Lisp Object System (CLOS) allows us not only to implement binary methods in a straightforward way, but also to support the concept directly, and even enforce it at different levels (usage and implementation).


Bibtex (lrde.bib)

@Article{	  verna.08.jucs,
  author	= {Didier Verna},
  title		= {Binary Methods Programming: the {CLOS} Perspective
		  (extended version)},
  journal	= {Journal of Universal Computer Science},
  year		= 2008,
  volume	= 14,
  number	= 20,
  pages		= {3389--3411},
  abstract	= {Implementing binary methods in traditional object-oriented
		  languages is difficult: numerous problems arise regarding
		  the relationship between types and classes in the context
		  of inheritance, or the need for privileged access to the
		  internal representation of objects. Most of these problems
		  occur in the context of statically typed languages that
		  lack multi-methods (polymorphism on multiple arguments).
		  The purpose of this paper is twofold: first, we show why
		  some of these problems are either non-issues, or easily
		  solved in Common Lisp. Then, we demonstrate how the Common
		  Lisp Object System (CLOS) allows us not only to implement
		  binary methods in a straightforward way, but also to
		  support the concept directly, and even enforce it at
		  different levels (usage and implementation).}
}