{def comb {def comb.r {lambda {:m :n :N} {if {= :m 0} then {A.new {A.new}} else {if {= :n :N} then {A.new} else {A.concat {A.map {{lambda {:n :rest} {A.addfirst! :n :rest}} :n} {comb.r {- :m 1} {+ :n 1} :N}} {comb.r :m {+ :n 1} :N}}}}}} {lambda {:m :n} {comb.r :m 0 :n}}} -> comb {comb 3 5} -> [[0,1,2],[0,1,3],[0,1,4],[0,2,3],[0,2,4],[0,3,4], [1,2,3],[1,2,4],[1,3,4],[2,3,4]]