partition method
Implementation
Tuple2<ISet<A>, ISet<A>> partition(bool f(A a)) =>
foldLeft(tuple2(new ISet.empty(_tree._order), new ISet.empty(_tree._order)),
(acc, a) => f(a)
? acc.map1((s1) => s1.insert(a))
: acc.map2((s2) => s2.insert(a)));