[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

new wording for eqv?



    Date: 15 Jun 88 17:31:29 PDT (Wed)
    From: willc@tekchips.crl

    ... obj1 and obj2 are pairs created at the same time by
    the same call to cons, ...
    ... obj1 and obj2 are vectors created at the same time by
    the same call to make-vector, ...
    etc.

If an object satisfied all other properties of a vector but was not
created by make-vector (eg, was pre-allocated with the system or created
by some internal routine in the process of loading or some such) would
EQV? not be required to return T?  I feel funny about defining things in
terms of the operator that does the creation unless you say that no
other operator is permitted to do such creation.

I am also uncomfortable with the phrase "at the same time".  Either it
is redundant with "by the same call" or else it is insufficient. If "the
same call" means the dynamic invocation of a function at runtime as
opposed to the lexical reference to the call on paper, then I assert
that "by the same call" is simply redundant. We often speak loosely of a
function returning "more than once" when people play fun games with
generalized catch but I don't think we ever talk about two calls to the
same continuation as being the same "call".

On the other hand, if you think "call" refers to a lexical reference
(which i hope you don't), then if you worry about multiprocessing (and
yes, here i'm for once being careful about my wording), there is a
concern about whether two calls can really occur at the same time (ie,
what is the granularity of time and/or does it matter that temporal
coincidence cannot be observed and you have to just always worry that it
might have happened), so you need to speak about control threads or "the
same place" (ie, same processor) or something more.

Also, even with Jonathan's fixes to the symbol clause to remove the
reference to printing, you still need to address gensyms. I suggest
that once you figure out how to correct the wordings I'm grumbling about
above, you do the same thing for symbols as you did with lists, etc.
That is:

 If the symbols are interned, then <<stuff with jonathan's fixes>>
 If the symbols are not interned, then <<something about how they
 were created by the same call to the function which makes an
 uninterned symbol>>.

I observe as an aside also that your description is somewhat
meta-circular, though perhaps not enough to worry about here. You
effectively begin by saying that EQV? computes whether two things
are distinct (for which i read "not the same"), and yet the
terminology uses the word "the same" all over the place. That is,
you talk about "the same time" and "the same call". In my mind,
flags go up as I try to decide what these phrases mean since I'm
in the middle of defining what that means. Fortunately, I have other
knowledge to appeal to, but it does leave me wondering whether if
people can be relied on to use such other knowledge, perhaps they
could also be relied upon to just understand just the first 
paragraph in the absence of all the elaboration. I'm not proposing
any change here -- I'm just being amused. This is the sort of things
that must have driven Webster and his successors nuts...