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

type specifiers



    Date: 1 June 1987, 11:24:47 EDT
    From: Timothy Daly <DALY@ibm.com>

    CLtL states that
      (SIMPLE-VECTOR *) is an abbreviation for (VECTOR T *)
     except that the elements are of type simple vector (p47)

[This doesn't relate to your question, but...]

A serious bit of miswording, that.  It should have said
"except that it additionally specifies that OBJECTS OF THE
TYPE are @I(simple) arrays."  I don't have a current list
of corrections to the manual; is this on it already?

    CLtL states that
     If a type specifier is a list, the car of the list is a symbol
    and the rest of the list is subsidiary type information. ... (p42)
[I'm not sure how this part relates to your question.]

    CLtL state that
     As a convenience, if a list has one or more unspecified items
    at the end, such items may simply be dropped rather than writing
    an explicit * for each one. (p43)

    Is (SIMPLE-VECTOR T) valid? (semantics: (SIMPLE-VECTOR T *))

No.  I don't know why you thought it might, so I'm not sure this is
the most helpful answer, but I think p47 is pretty clear that SIMPLE-VECTOR
takes only a single argument, a size.  I.e. (SIMPLE-VECTOR 47) =
(SIMPLE-ARRAY T 47).

However, I think this is really also a bug in the manual, and that it is
SUPPOSED to take two arguments, like you apparently thought, and it was
accidentally edited to take arguments like SIMPLE-STRING instead of
SIMPLE-ARRAY.  Unfortunately, we've been using the manual to specify the
language, and at this point I think this would have to be regarded as
an incompatible change.  (I still think we should fix it; SIMPLE-VECTOR
is of much less use as currently defined, and quite confusing).

If we fix it as described, then the answer to your question is YES.

    tim
    DALY@IBM.COM