HLL in Scheme

Patrick Premont premont@cs.toronto.edu
Thu, 1 Feb 1996 17:48:00 -0500


>    An annotation is anything that is functionally a method or member of
> an object, but can be implemented in just any way.

Ok. I'm very happy it was not complicated. But then why not call it a
method or a function ? We could remove from the term any connotation
as to how it is implemented.

I'm afraid we have way to many terms semantically equivalent to
"function". We have function, method, attribute, annotation.

If the function "increment" is an annotation, then the function "sum"
should also be one. The fact that it applies to many arguments doesn't
change the usefulness of having a term that doesn't say anything about
how the function is implemented. But it seems weird to talk about
a multiple argument annotation. How do you say (+ 2 3) = 5. The annotation
+ of 2 and 3 is 5 ? That seems to mean (+ 2) = 5 and (+ 3) = 5.

Why not just use the word function. Like in a mathematical function
(where all implementation semantics are absent) ?

And there is also the fact that the word annotation seems to designate
the result of applying the function to an object, not the function itself.
But then at other times it seems to mean the function.

What about using :
function : a mathematical function
annotation : the result of applying a function to one argument
             (annotate X with Y would mean somefuntion(X)=Y)
method : <means nothing for now>
attribute : <means nothing for now>

[Fine exemples of how implementation is not specified in annotations]

> > You mean that the behavior of most HLL- objects is defined by their
> > meta-object and the recursion stops when the meta-object is a primitive
> > which has been built into the interpreter ?
>    Yes. And because an object can be seen in different contexts,
> the "what is your meta-object" question may have various answers,
> as long as all of these are founded.

Isn't the meta-object of an object one of its important defining attributes ?
Isn't it weird to assume that ONE object could have different meta-objects
depending on the context ? How could it be the SAME object then ?
But I'm sure I ask these questions because I don't understand what is a
context. So that would be the next thing to explain to me (and others
I'm sure) (perhaps even to youself to some degree ?).

> > I assume most of your comments don't mean to stop doing the
> > translation and implement what you suggest but rather that we will
> > probably change things to reflect your comments as soon as we can
> > formalize them ?
>    Yes.
Good.

> > Except maybe for enhencing my type/object system.
>    After you send me a bit more documented version of what you're doing,
> we'll talk about it.
>    If anyone else on the list wants to participate, we may have to
> publish something around the Tunes pages...

You could just put the files uncompressed in a directory and let
people see the most up-to-date sources and documentation (with a
compressed version if they want to transfer it).

Or maybe I could do that... I'll see if I can make some of my
directories at the university available through the Web. You could
then place a link to here on your pages. Also this would be
ideal since I wouldn't have to send you uuencoded versions.

Patrick