Pairs
Implement the function
val pairs : 'a list -> ('a * 'a) list
so that pairs l is the list of all distinct ordered pairs (in any order,
with repeats) of elements taken from the list l.
Examples
let _ = assert (pairs [] = []) let _ = assert (pairs [1] = [(1, 1)]) let _ = assert (pairs [1;1] = [(1, 1)]) let _ = assert (List.length (pairs [1;2;3]) = 9) let _ = assert (List.mem (1, 1) (pairs [1;2;3])) let _ = assert (List.mem (1, 2) (pairs [1;2;3])) let _ = assert (List.mem (1, 3) (pairs [1;2;3])) let _ = assert (List.mem (2, 1) (pairs [1;2;3])) let _ = assert (List.mem (2, 2) (pairs [1;2;3])) let _ = assert (List.mem (2, 3) (pairs [1;2;3])) let _ = assert (List.mem (3, 1) (pairs [1;2;3])) let _ = assert (List.mem (3, 2) (pairs [1;2;3])) let _ = assert (List.mem (3, 3) (pairs [1;2;3]))