let comb m xs = let xs = Array.of_list xs in if m > Array.length xs then [] else begin let arr = Array.make (m+1) [] in arr.(0) <- [[]]; for j = 0 to Array.length xs - m do for i = 1 to m do arr.(i) <- arr.(i) @ List.map (fun ys -> xs.(j+i-1)::ys) arr.(i-1) done done; arr.(m) end ;; comb 3 [0;1;2;3;4];;