May be add removeAll and removeSameAll to sys::List?
brianThu 19 Jul 2012
My initial thought is that would be sort of obscure one since its easily done in loop. I'd say we add if some other people chime in and say they would like to see it too.
Yuri StrotThu 19 Jul 2012
I think removeAll must be there. When we have addAll and haven't removeAll it looks inconsistent. Another reason is that removeAll has potential for performance improvements (no need to shift bytes after each element remove). Even without low-level optimization when I need to implement removeAll on my own I prefer to use list.each { remove(it) } which is much slower than native implementation.
brianThu 19 Jul 2012
Promoted to ticket #1960 and assigned to brian
I see now - I thought removeAll was already there, and removeAllSame was what we discussing to add. I agree we should definitely add removeAll.
So should also have removeAllSame too?
KevinKelleyThu 19 Jul 2012
I'd nuke the removeSame... these can all be simulated with findAll |v->Bool| { v !== item } or similar...
The only thing is that this is the functional style (return a new, modified list) vs. the OO style (modify list in-place). Since both styles need to be supported, then it seems reasonable to have most-efficient implementations, like addAll and removeAll. But since there's already another way, I don't see the need to spell out all the permutations.
Since List is such a "use-it-for-everything" kind of thing, it's really easy for it to get bloated.
go4Fri 20 Jul 2012
The removeAll sounds like the List::clear. I prefer to removeWhile.
list.each { remove(it) }
Can I modify the list in the iteration?
brianMon 15 Oct 2012
Renamed from lack of removeAll and removeAllSame in sys::List to Add List.removeAll
brianMon 15 Oct 2012
Ticket resolved in 1.0.64
Added List.removeAll:
**
** Remove every item in this list which is found in the 'toRemove' list using
** same semantics as `remove` (compare for equality via the == operator).
** If any value is not found, it is ignored. Return this.
** Throw ReadonlyErr if readonly.
**
L removeAll(L list)
Akcelisto Thu 19 Jul 2012
May be add
removeAll
andremoveSameAll
tosys::List
?brian Thu 19 Jul 2012
My initial thought is that would be sort of obscure one since its easily done in loop. I'd say we add if some other people chime in and say they would like to see it too.
Yuri Strot Thu 19 Jul 2012
I think
removeAll
must be there. When we haveaddAll
and haven'tremoveAll
it looks inconsistent. Another reason is thatremoveAll
has potential for performance improvements (no need to shift bytes after each element remove). Even without low-level optimization when I need to implementremoveAll
on my own I prefer to uselist.each { remove(it) }
which is much slower than native implementation.brian Thu 19 Jul 2012
Promoted to ticket #1960 and assigned to brian
I see now - I thought removeAll was already there, and removeAllSame was what we discussing to add. I agree we should definitely add removeAll.
So should also have removeAllSame too?
KevinKelley Thu 19 Jul 2012
I'd nuke the
removeSame
... these can all be simulated withfindAll |v->Bool| { v !== item }
or similar...The only thing is that this is the functional style (return a new, modified list) vs. the OO style (modify list in-place). Since both styles need to be supported, then it seems reasonable to have most-efficient implementations, like
addAll
andremoveAll
. But since there's already another way, I don't see the need to spell out all the permutations.Since List is such a "use-it-for-everything" kind of thing, it's really easy for it to get bloated.
go4 Fri 20 Jul 2012
The
removeAll
sounds like theList::clear
. I prefer toremoveWhile
.Can I modify the list in the iteration?
brian Mon 15 Oct 2012
Renamed from lack of removeAll and removeAllSame in sys::List to Add List.removeAll
brian Mon 15 Oct 2012
Ticket resolved in 1.0.64
Added List.removeAll:
changeset