} else {
if (0 == f.arity()) {
Collector<RippleList> results = new Collector<RippleList>();
// Note: synchronous evaluation is required
// Note: stack context is trivial
f.apply(left.getRest(), results, mc);
for (RippleList s : results) {
RippleList i = s;
RippleList cur = right;
while (!cur.isNil()) {
i = i.push(cur.getFirst());