LAST CALL for SRFI-113, Sets and bags John Cowan (16 Aug 2014 00:23 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Michael Sperber (16 Aug 2014 14:11 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (16 Aug 2014 18:16 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Per Bothner (16 Aug 2014 20:33 UTC)
Broken SRFI 113 title John Cowan (16 Aug 2014 23:19 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Kevin Wortman (18 Aug 2014 22:11 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (18 Aug 2014 22:38 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Per Bothner (18 Aug 2014 22:42 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Kevin Wortman (18 Aug 2014 22:57 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (19 Aug 2014 00:26 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Kevin Wortman (19 Aug 2014 17:57 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (19 Aug 2014 18:18 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Kevin Wortman (19 Aug 2014 21:15 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (19 Aug 2014 22:20 UTC)
Re: LAST CALL for SRFI-113, Sets and bags Kevin Wortman (20 Aug 2014 06:44 UTC)
Re: LAST CALL for SRFI-113, Sets and bags John Cowan (20 Aug 2014 13:28 UTC)

Re: LAST CALL for SRFI-113, Sets and bags John Cowan 18 Aug 2014 22:38 UTC

Kevin Wortman scripsit:

> Actually any Scheme object _except comparators_, right?

No, they can contain comparators if you use default-comparator.
Using the sample implementation of default-comparator, performance
will suck, because all comparators will hash to the same value.  But
everything should work, and a better implementation-specific version
of default-comparator will work better.

> May a multi-values object be an element? If so there are some minor picky
> edits, for example "The value that *mapper* returns is added to the set"
> should be "The object that *mapper* returns is added to the set".

Multiple values aren't an object (though they are implemented that way
in some Schemes).  Calling (set default-comparator (values 1 2)) doesn't
work reliably.

> "Sets are a standard part of the libraries of many high-level programming
> languages..."
> You might want to cite SRFI 1 list sets here too.

Done.

> "and can be optimized" sounds awkward, consider rewording to "and allows
> for optimization".

Done.

> "hysterical raisins" should be "historical reasons" right?

It's a joke:  see <http://www.catb.org/jargon/html/H/hysterical-reasons.html>

> "Implementations must not require the provision of both a comparison
> procedure and a hash function."
> Any reason for this? An implementor might want to use a hybrid hash/tree
> data structure such as a treap.

I think it's a reasonable compromise between implementer freedom and
user obligation.  But you could talk me out of this.

> "Note that this differs from the SRFI 1 analogue because it does not return
> a useful value."
> IMO #t and #f qualify as useful; consider rewording to "because it does not
> return an element of the set."

Done.

> I think the arguments to the set-map example are in the wrong order.

Fixed.  The example hadn't been updated since the change to comparators.

> As discussed previously, I think it would be friendlier for the
> documentation for set-map to say something like:
>
> "Note that, when *proc* defines a non-1:1 mapping, some of the mapped
> objects may be equivalent according to *comparator,* and in this case
> duplicate elements are omitted as in the set constructor. For example,
>
> (set-map (lambda (x) (quotient x 2)) integer-comparator (set
> integer-comparator 1 2 3 4 5))
> => (set integer-comparator 0 1 2)"

Done.

> Likewise, it would be friendly to add this sentence to the documentation
> for list->set, list->set!, and bag->set :
> "Duplicate elements are omitted as in the set constructor."

Done.

> Kevin Wortman

Thanks for the extensive review.  The new version will be pushed to
ccil.org shortly.

--
John Cowan          http://www.ccil.org/~cowan        xxxxxx@ccil.org
I must confess that I have very little notion of what [s. 4 of the British
Trade Marks Act, 1938] is intended to convey, and particularly the sentence
of 253 words, as I make them, which constitutes sub-section 1.  I doubt if
the entire statute book could be successfully searched for a sentence of
equal length which is of more fuliginous obscurity. --MacKinnon LJ, 1940