[ stack ] is comb.stack [ stack ] is comb.items [ stack ] is comb.required [ stack ] is comb.result [ 1 - comb.items put 1+ comb.required put 0 comb.stack put [] comb.result put [ comb.required share comb.stack size = if [ comb.result take comb.stack behead drop nested join comb.result put ] comb.stack take dup comb.items share = iff [ drop comb.stack size 1 > iff [ 1 comb.stack tally ] ] else [ dup comb.stack put 1+ comb.stack put ] comb.stack size 1 = until ] comb.items release comb.required release comb.result take ] is comb ( n n --> ) 3 5 comb witheach [ witheach [ echo sp ] cr ]