Email list hosting service & mailing list manager

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