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

More minor issues

This page is part of the web mail archives of SRFI 44 from before July 7th, 2015. The new archives for SRFI 44 contain all messages, not just those from before July 7th, 2015.



The explanation of * and % is confusing. The SRFI states:

    When * is encountered in the definitions below, it is implied that
    the asterisk is replaced with a function for the specific collection
    and each of the collection's supertypes for which the procedure is
    defined. For example, if we had a 'list' flexible sequence
    collection, the functions list-contains?,
    flexible-sequence-contains?, sequence-contains?, bag-contains? must
    all exist, but collection-contains? does not.

But the *-methods seem to be defined for the supertype, not the subtype.
Given that, the above explanation is confusing. Wouldn't it be better to
state:

    When * is encountered in the definitions below, it means that the
    function exists for the named collection and all of its subtypes.
    For example, all bags and subtypes of bag have a *-contains?
    function: bag-contains?, sequence-contains?, and even
    list-contains?.

Also, I'm not sure whether these functions are supposed to be
polymorphic. I think they are, but the SRFI isn't entirely clear. If so,
please clarify; for example:

    Each *-function may be applied to the specific type named or to any
    of its subtypes. For example, bag-contains? can find a value in a
    sequence, flexible-sequence, or list.

Unrelated to this: The *-remove functions state that they "return two
values." I had to check the reference implementation to confirm that
this means "returns using VALUES." Perhaps the function prototype should
read:

    procedure: *-remove-left![!] * => (VALUES % value)
-- 
Bradd W. Szonye
http://www.szonye.com/bradd