From: "Mark S. Miller" <>
Replying To: Tyler Close <>
Date: Tue, 03 Nov 1998 20:34:35 -0800
Subject: Re: Types, Makers, and Inheritanc

At 01:33 PM 10/20/98 , Tyler Close wrote:
>At 09:48 AM 10/20/98 -0700, you wrote:
>>[-] Rule #1 of Capability-based Design:  Distinctions in authority are 
>>represented with distinct objects.  
>[?] I understand and agree with this design principle; however, I am not sure
>that I see how it applies. Exactly what authority does a type object give
>you? I don't see that it can in any way add to the way that you interact
>with an instance object.

[-] Yes, the type gives no authority.  But the maker does.
Therefore, they're distinct.

>>Programs must be able to manipulate 
>>descriptions of objects and their protocols (i.e., type objects) without 
>>granting the authority to create instances. 
>[?] Could you explain exactly what kind of manipulation you're talking about?

[#] Does this possible gun respond to the "shoot" message?

>>It's useful to be able to 
>>talk about the protocol of bank accounts, create user interfaces to them, 
>>etc. without allowing the construction of them outside of banks.  This 
>>means that they must be separate objects.
>[-] I don't see how it's necessary to have Type objects in order to have an
>interface to an instance object. In C++, I never had a need or desire for
>Type objects.

[?] Really?
Are you not the one, at the foresight-office meeting, that approved of the
ability to ask an object about its protocol?

>While Type objects do represent a different concept than Maker objects, I
>feel comfortable that I can get by just fine without Type objects.

[-] Protocol descriptions are needed.
As an example, how would you write a GUI-enhanced command interpreter where
the user can pop up a menu of all the messages they can send to a given
object?  In Java 1.0, which had no protocol for asking an object about its
protocol, I cannot imagine a way to do such a command interpreter.

It would have been hard travelling in Prague if it were impossible to ask
"Do you speak English?".

> Going without Type objects might even encourage better designs.

[?] How so

[++++] You are pushing in a good direction.

I just wanted to emphasize that I appreciate your vigorous efforts to get
rid of things.  It is proper that I be pushed to try to justify everything
I don't get rid of.  a) We probably will find some things to get rid of,
and b) at least we'll learn something.  Even if it seems I always say no,
and even if I use reasons you find repugnant, please keep pushing.  Thanks!

	You keep pushing, and I'll Popper,