Subject: Re: dynamic redefinition of classes
From: Erik Naggum <>
Date: 1998/11/05
Newsgroups: comp.lang.lisp.franz,comp.lang.lisp,comp.lang.clos
Message-ID: <>

* "Mattias Högström" <>
| I am new to quite new to object-orientation in lisp

  um, it is less of a new thing than it might appear to be.  it is easier
  to think of Common Lisp as object-oriented from the start than to think
  of the object-oriented features as somehow "different" or "additional".

| Is dynamic redefinition of classes something like C++'s dynamic binding?

  no.  you execute the code that defines a class at run-time in CL, and you
  can execute a different piece of code that defines a class that already
  exists, and this is handled well by the system, which remembers of which
  "version" of a class an instance is an instance.

| My first object-oriented language was C++, so I am not used the term
| "meta class".

  it might also help to stop regarding C++ as an object-oriented language
  and especially stop comparing anything to it.  it take some effort to
  avoid it, but do not let your first experiences color your next

| In java all classes inherits from the class "Object", is that a meta
| class?

  the meta-class in Java is Class.  <class>.class is an instance of Class,
  and you can call its newInstance method, for instance.  the reflection
  protocol allows you to talk about the instances of Class.  you can not
  create new meta-classes (or sub-classes of Class).

| When do one need to write meta classes?

  when it is harder to what you need to do without it.  knowing that you
  can will save you a lot of work, but you won't get there for a while.

  The Microsoft Dating Program -- where do you want to crash tonight?