Support of algebraic operations on sets

sig siguctua at
Sat Jun 16 12:21:24 UTC 2007

On 16/06/07, Bert Freudenberg <bert at> wrote:
> On Jun 16, 2007, at 10:37 , sig wrote:
> > I'd like to see useful code which uses #difference: for dictionaries
> > with current semantics.
> I'd like #difference: to have the same semantics for every
> Collection. Including, of course, Sets and Dictionaries.
> > I don't want to explain a newcomer about Set which behaves as
> > not set, because "it's implemented using language specific
> > standards/rules". Then there's no reasons to call it a set. I think
> > the choice to call a set 'Set' was to make it conforming with algebra
> > and implementing   #union:, #intersection:, #difference: too.
> Completely agreed.
> > As i said before, if Association uses both key and value in
> > comparison, then this class have no value at all and degenerates into
> > array of two elements.
> I'm not sure why this was changed, but one could argue either way.
> Anyhow, this is secondary to the Collection discussion, as it is an
> implementation detail of Dictionaries.
> > And dictionary degenerates to something in the middle between Set and
> > OrderedCollection.
> > Dictionary is a subclass of Set, it must be more specific, while still
> > behave as set. But to what we see, it magically becomes less specific
> > by violating rules defined in parent class(es).
> That is exactly the point. That's why it should not be a subclass of
> Set, as Nic already suggested.

Yes, but if it still is, then it must follow the rules.

> > No, i would like to keep a Dictionary be subclass of Set.
> I'm trying hard to understand you. Do you suggest that a Dictionary
> method like #includes: operates on the keys while #do: operates on
> the values? Isn't that ridiculous?

Its obvious:  both #includes: and #do: must operate on associations.
Because from viewpoint of Collection, element of Dictionary must be an
association, not key or value.

>Or should all collection
> operations work on the keys to be like a Set? How would you access
> the values then? In any case, this would be a completely new concept
> and should not be called Dictionary.
> - Bert -

More information about the Squeak-dev mailing list