// isSep: func(A) -> bool static L> groupNonEmpty(L l, O isSep) { new L> out; int j = 0; for (int i = 0; i < l(l); i++) { bool sep = isTrue(callF(isSep, l.get(i))); if (sep) { if (i > j) out.add(newSubList(l, j, i)); j = i+1; } } if (l(l) > j) out.add(newSubList(l, j)); ret out; }