Permutations
Implement the function
val permutations : 'a list -> 'a list list
so that permutations l is a list of all permutations of l.
Examples
let _ = assert (permutations [] = [[]]) let _ = assert (List.length (permutations [1;2;3]) = 6) let _ = assert (List.mem [1;2;3] (permutations [1;2;3])) let _ = assert (List.mem [1;3;2] (permutations [1;2;3])) let _ = assert (List.mem [2;1;3] (permutations [1;2;3])) let _ = assert (List.mem [2;3;1] (permutations [1;2;3])) let _ = assert (List.mem [3;1;2] (permutations [1;2;3])) let _ = assert (List.mem [3;2;1] (permutations [1;2;3]))