[Openmcl-devel] (SETF FIND-CLASS)

Gary Byers gb at clozure.com
Tue May 5 05:25:35 PDT 2009

? (class-name (find-class 'bar))

See the glossary entry for "proper name" in CLHS.

See also
which seems to be full of typos but is hopefully intelligible.

If C is a class and S is a symbol, then I think that the spec says that
the effect of

(setf (find-class s) c)

is to define S to be a type specifier (equivalent to C) if and only if

(eq (class-name c) s)

is also true;  (SETF FIND-CLASS) checks for this in CCL and only defines
S as a type specifier in that case.

This interpretation seems pretty clear to me.  (I'm willing to believe
that there's something in the spec that contradicts that interpretation,
but I can't find it and the preponderance of the evidence seems to support
this interpretation.)  All well and good, but it seems that many (most ?
all ?) other implementations unconditionally define S to be a type-specifier
whenever C is a class, and it may be true that most people expect this

As noted in the earlier message, CCL's behavior would be more consistent
if DEFTYPE also checked for proper-namedness (or the equivalent).

--On May 5, 2009 1:03:47 PM +0200 "Leslie P. Polzer" 
<sky at viridian-project.de> wrote:

> I just noticed that CCL doesn't seem to register class aliases
> as types:
> ? (defclass foo nil nil)
> ? (typep 5 'foo)
> ? (setf (find-class 'bar) (find-class 'foo))
> ? (typep 5 'bar)
>> Error: Unknown type specifier: BAR
> But the spec (FIND-CLASS) says:
>   Returns the class object named by the symbol in the environment.
> And in section 4.3.7, "Integrating Types and Classes":
>   Every class that has a proper name has a corresponding type
>   with the same name.
> This seems to be a pretty clear case to me, but I may be
> convinced of the converse. :)
>   Leslie
> --
> http://www.linkedin.com/in/polzer
> _______________________________________________
> Openmcl-devel mailing list
> Openmcl-devel at clozure.com
> http://clozure.com/mailman/listinfo/openmcl-devel

More information about the Openmcl-devel mailing list