New release of SRFI 113
John Cowan
(04 Dec 2013 04:25 UTC)
|
Re: New release of SRFI 113
Michael Sperber
(04 Dec 2013 08:40 UTC)
|
Re: New release of SRFI 113
Kevin Wortman
(08 Dec 2013 04:03 UTC)
|
Re: New release of SRFI 113 John Cowan (08 Dec 2013 17:35 UTC)
|
Re: New release of SRFI 113
Kevin Wortman
(09 Dec 2013 00:18 UTC)
|
Re: New release of SRFI 113
John Cowan
(09 Dec 2013 01:32 UTC)
|
Re: New release of SRFI 113
Kevin Wortman
(10 Dec 2013 06:35 UTC)
|
Re: New release of SRFI 113 John Cowan 08 Dec 2013 17:35 UTC
Kevin Wortman scripsit: > What happens when some of the elements passed to a set constructor are > equal according to the comparator? Only one of the duplicate objects > will make it into the set and the programmer may want to control which. > In another thread I think we settled on optionally passing in a > procedure to decide between pairs of duplicate elements. This issue > applies to list->set, list->set!, set-map, and bag->set as well. This is indeed an important point, which I need to think about further. > set->list > > "However, repeated calls to this procedure will return a list in the > same order until the set is mutated." Is there a motivation for this > requirement? An implementation could conceivably want to reorder sets > between mutations. For instance a hashtable might voluntarily shrink > itself to cooperate with garbage collection. An excellent point. Removed. > Bags > > Personally I would prefer the term "multiset". Has that already been > considered? I thought about it, as it is the more commonly used term. But it is not only longer, but to my mind misleading: an integer set is a set, but a multiset is not a set. > bag-decrement! cannot make the count of elements less than zero, right? Right. Added. > It seems like the most natural equality predicate for enumeration sets > is symbol=?, not eq?. Right. Fixed, with a note that in Schemes without `symbol=?`, the implementation can fall back to `eq?`. > The symbols passed to define-enumeration-type and make-enum-type must > all be distinct, right? Right. Fixed. > Why not include ...-intern! procedures for all types of sets? Because intern! means the same as add! for sets with specialized types. I suppose I could add it anyway just for completeness. -- John Cowan xxxxxx@ccil.org http://ccil.org/~cowan It's the old, old story. Droid meets droid. Droid becomes chameleon. Droid loses chameleon, chameleon becomes blob, droid gets blob back again. It's a classic tale. --Kryten, Red Dwarf