On 24/07/2013 12:17, Neil Bothwick wrote:
> On Wed, 24 Jul 2013 14:00:54 +0400, Pavel Volkov wrote:
> 
>> It initially suported set arithmetic (you could writes expressions like
>> "@set1+@set2/@set3"), I wonder why it was dropped :)
> 
> What does that mean? set1 and one of set2 or set 3? Or both set1 and set2
> or set3 only? I'm not sure how this would be useful but I can certainly
> see how it would cause confusion and problems, but I hadn't heard if it
> before.
> 
> 

It's standard mathematical set operators. In maths, a set is defined as
"a collection of well-defined objects". Sets have no dupes.

http://en.wikipedia.org/wiki/Set_%28mathematics%29
http://en.wikipedia.org/wiki/Set_theory

Sets have several well-defined operations that can be done on them:
union, intersection, difference plus a few others.

@set1+@set2/@set3 reduces to:

all the elements of set1 and set2 without the elements that are in set3
(/ is difference).

As an example, assume portage ships two sets @kde and @kdedev:

@kde
  kdeadmin-meta
  kdebase-meta
  kdemultimedia-meta
  kdepim-meta
  ...

@kdedev
  kdewebdev-meta
  kdebindings-meta
  kdesdk-meta


However, kmail sucks and akonadi sucks moar, so define for yourself

@suckykde
  kdepim-meta

And add to your world sets:

@kde+@kdedev/@suckykde

effectively giving you kde without kde-pim.
Without operators, you have to copy-paste an existing set and maually
remove the entriess you don't want.

Useful, not so?
Well, it all gets extremely murky very very quickly. Portage applies
more than just mathematical sets, there's this concept of deps that are
not part of set theory.

What if something in set1 has a dep, and that dep is listed in set3 and
must be removed. To resolve this, you must have precedence rules and
must ignore something. You either ignore set3 and install anyway, or
throw a blocker and say the item is required in set1.

Either way there's no clean way to do it and lots of users are going to
get annoyed. Not to mention the extra bug reports





-- 
Alan McKinnon
alan.mckin...@gmail.com


Reply via email to