fcn powers(m){[0.0..].tweak(fcn(n,m){a:=n; do(m-1){a*=n} a}.fp1(m))} var squared=powers(2), cubed=powers(3); fcn filtered(sg,cg){s:=sg.peek(); c:=cg.peek(); if(s==c){ cg.next(); sg.next(); return(self.fcn(sg,cg)) } if(s>c) { cg.next(); return(self.fcn(sg,cg)); } sg.next(); return(s); } var f=[0..].tweak(filtered.fp(squared,cubed)) f.drop(20).walk(10).println();