Здравствуйте Alexey Tourbin В сообщении от Sunday 17 December 2006 19:15 Alexey Tourbin написал(a): > On Sun, Dec 17, 2006 at 07:09:33PM +0300, Alexey Tourbin wrote: > > On Sun, Dec 17, 2006 at 05:14:14PM +0300, Alexey Tourbin wrote: > > > On Sun, Dec 17, 2006 at 04:43:40PM +0300, Alexey Tourbin wrote: > > > > +static inline bool > > > > > > > > +vercmpOrder(const pkgCache::VerIterator &a, const > > > > pkgCache::VerIterator &b) > > > > > > > > +{ > > > > > > > > + return a.CompareVer(b) < 0; > > > > > > > > +} > > > > > > Кстати вот тут должно быть "<" или "<="? > > > > > > Что-то у Страуса примера на сортировку с предикатом порядка > > > нету. > > > > Ага, тут похоже должно быть "<=". Дело в том, что всего одной > > операции > > > > "<=" достаточно, чтобы логически вывести все остальные операции > > сравнения. > > > > > > > > (==)(a,b) := (a<=b)&&(b<=a) > > > > (>=)(a,b) := !(b<=a) Это явно неправильно (>=)(a,b) := !(b > Тут у меня логическая ошибка, кажется должно быть > > > > (>=)(a,b) := !(b<=a)||(b==a) > > Но не суть. Суть в том что нестрогий порядок позволяет доопределить > > равенство, а строгий не позволяет. Что-то я не очень пойму к чему это всё , но !(>=)(a,b) := (<)(a,b) := (a)(a,b) := (<=)(a,b) := (a<=b) (>)(a,b) := !( (<)(a,b)||(==)(a,b) ) = !(a<=b) т.е. строгий и нестрогий порядок - суть просто обратные действия (отношения). > > (!=)(a,b) := !(a==b) > > > > (<)(a,b) := (a<=b)&&(a!=b) > > > > (>)(a,b) := (a>=b)&&(a!=b) -- С уважением Xихин Руслан