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

Various comments



Collections Hierarchy

A sequence might also be considered a subtype of a dictionary, since
the dictionary contains values associated with arbitrary keys and the
sequence contains values associated with non-negative integer keys.


Iterator Mutation

Why would an iterator change the key rather than the associated value
in the case of a dictionary? If this is a reference to the special key
iterator defined for dictionaries, it might be clarified.


Procedures

Are the "%" characters actually supposed to be "*" characters, or did
I miss something here? Although it is customary not to define the
return value of destructive functions, the *-remove! functions might
return #f or #t to indicate whether the collection was actually
modified, since removing a value that is not present is not defined as
an error.


Collections

The *-iterator procedures do not specify the order in which elements
of non-ordered collections will be returned. This would seem to imply
that the elements of non-ordered sequences are returned in arbitrary
order rather than ordered by index. I assume this is intentional.

The constructor procedures do not define how the elements of mapped
collections (dictionaries and sequences) are to be specified. The
construction of dictionaries is detailed below, but that of sequences
is not. I assume that it is not possible to explicitly specify the
index of a value. But will the index of a value correspond to its
position in the argument list, or not?


Bags

The generic *? definition is echoed in many of the following sections
devoted to individual collection types, including the bags section.
In my humble opinion, many of the procedures defined would benefit
from multiple arguments. Why will bag-add!, for instance, add only a
single value to a bag, instead of multiple values?


Sets

As sets were defined to contain only unique values, the definition of
set-contains? might be refined. Typical set procedures, such as union
and intersection are not defined, however. As there most certainly is
a very good reason for this omission, it might be appropriate to
mention this reason at this point.


Dictionaries

The definition of dict? is identical to that of flexible-sequence? The
definition of make-dict conflicts with the definition of make-* given
under the heading "Ordered Collections". At the very least, this would
seem to indicate that there are no ordered dictionaries, which would
be no less useful than ordered sequences, as far as I am concerned.

Why are the procedures called dict-get and dict-put! instead of
dict-ref and dict-set!, as might be expected for consistency?


And finally, just a few typos I noticed: Section "Issues", should read
"it is difficult" instead of "it difficult". The "Collections
Hierarchy" diagram should read "Flexible Sequence" instead of
"Flexible Sequenece".


Regards

Michael Burschik