Newsgroups: comp.ai.philosophy,comp.ai,comp.object.logic,sci.philosophy.tech,comp.object
Path: cantaloupe.srv.cs.cmu.edu!europa.chnt.gtegsc.com!news.mathworks.com!news.ultranet.com!news.sprintlink.net!cs.utexas.edu!uwm.edu!msunews!harbinger.cc.monash.edu.au!lugb!news
From: doug@latcs1.lat.oz.au (Douglas Moore)
Subject: Re: FIRST CLASS definition
Sender: news@lugb.latrobe.edu.au (News System)
Message-ID: <1995Apr8.023900.755@lugb.latrobe.edu.au>
Date: Sat, 8 Apr 1995 02:39:00 GMT
References: <1995Mar29.012406.16557@lugb.latrobe.edu.au> <patrick_d_logan.213.0009493C@ccm.jf.intel.com> <3lcvjv$7ih@gap.cco.caltech.edu>
Organization: La Trobe University, Australia
X-Newsreader: WinVN 0.92.6+
Lines: 82
Xref: glinda.oz.cs.cmu.edu comp.ai.philosophy:26667 comp.ai:28895 comp.object.logic:422 sci.philosophy.tech:17438 comp.object:29310

In article <3lcvjv$7ih@gap.cco.caltech.edu>, jrc@asgard.srl.caltech.edu (Jay Cummings) says:
>
>Patrick D. Logan (patrick_d_logan@ccm.jf.intel.com) wrote:
>: In article <1995Mar29.012406.16557@lugb.latrobe.edu.au> Douglas Moore writes:
>
>: >(a) What is your preferred definition of first classness?
>
>: An object that can exist without a name and be referenced directly by any** 
>: other object is a "first class" object.
>
>Um, how can it fufil the second criterion, being referenced, and still fufil
>the first, possibly not having a name?  How can an object without a name
>be referenced?

The initial question was posed for two purposes:
     (a) Obtain the best technical definition as currently accepted in 
         the Object Oriented community
     (b) To see whether the philosophically inclined had cottoned on 
         to the importance of first classness in a wider perspective.

It appears, from the response, that we are limited to dealing with 
(a). At the risk of appearing naive, I jot down my understanding of 
Patrick Logans response to (a) in the hope that any naivety expressed 
on my part, or by others, can be cleared up. It also puts the argument 
on a more concrete level. Thus, does the following make sense?

--------------
If I have an abstract class called Object say, and I build a container 
class for instances of the class Object, and I want all entities to be 
first class, then it would appear that I would do something like the 
following:

Construct a container class Container where any instance of the 
container class contains _first class_ objects. These objects will all 
be nameless instances of derived classes of the base class Object. 
Being nameless, they must all be anonymously referred to by their 
this pointers, say.

It would appear that the Container class itself must be a derived 
class of Object, in order that the container class instances can 
contain instances of the Container class. If this were not the case 
the Container class would have the implicit rule "I can contain any 
instance object except instances of the Container class." 

Being pedantic, and making the requirement even tighter, the Container 
class instances should also be capable of containing (or not 
containing) the class Container itself (seen in terms of class data 
and class functions) as_an_object , and not just instances of the 
class Container.  [I dont see how you can do this, in C++ at least, 
as the class_as_an_object doesnt have a this pointer] 

If all of the above can be satisfied, then the content of an instance 
of the Container class will all be first class (nameless) objects. In 
order to satisfy the second criteria for first classness, the 
Container class must provide a public interface for referencing its 
objects according to some criteria other than a proper name.

------------------
The alternative approach to the above would be via generic 
parameterised classes. The specification and implementation of the 
generic classes would have to exclude any reference to any explicit 
instance of a class. The names of all entities would have to be the 
name of an argument in the parameterisation and so, not a proper name. 
I dont think that any existing OO language could handle this highly 
recursive kind of specification. Nevertheless, wouldnt the generic 
approach also be able to claim to satisfy first classness as described 
by Patrick Logan, if it were implementable?

Doug

   --------------------------------------------------
       Douglas Huntington Moore (doug@latcs1.lat.oz.au)

Epictetus,  Stoic thinker and ex slave, born 50 AD....
    The story of Epictetus being tortured. His torturer was twisting the
    philosopher's leg to hear him scream. Epictetus calmly said, "If you
    continue like that, you will break my leg." The torturer continued 
    twisting and finished up in breaking Epictetus's leg. Epictetus then
    proclamed, "I told you so. There, it's broken." 
 
In order to get to the truth, try this test out on you favourite philospher.
   --------------------------------------------------
