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