Subject: Re: How make an abstract class in CLOS?
From: Erik Naggum <>
Date: 2000/05/23
Newsgroups: comp.lang.lisp
Message-ID: <>

* Andrew Cooke
| The machine I have the ANSI spec on isn't running at the moment, so
| I may have the wrong names here, but perhaps you could consider
| using defgeneric as the equivalent in some way of an abstract class,
| and defmethod as implementing that class?  (I'm not sure it's
| particularly useful to do so, however.)

  On the contrary, this is really what we're looking for.  In my view,
  this is the only intelligent transposition of the "abstract class"
  bullshit from the C++ world into areal object-oriented system, and
  it shows that a fairly simple concept (generic functions) needs to
  be reimplemented in a round-about, counter-intuitive way in an "OO"
  system that fails to understand that classes do not "own" methods.

  "Abstract classes" do not have anything to do with the _classes_.
  It's a misfeature of the encapsulation mechanism in C++ classes,
  which is itself a misfeature of its implementation specifics and
  its legacy from C and a misunderstanding of Simula's mechanisms.

  It was said back in the early 1990's data communication that the
  question "What is X.25?" could be asked by only ignorants and deeply
  sarcastic experts.  Later, "What is a database?" and "What is
  object-orientation?" have become similar questions.  I thought it
  was appropriate to ask "What is an abstrat class?" the same way.

  If this is not what you expected, please alter your expectations.