Cartesian product of two or more lists: Difference between revisions

m
Line 1,871:
let cart_prod l1 l2 =
List.fold_left (fun acc1 ele1 ->
List.fold_left (fun acc2 ele2 -> (ele1,ele2)::acc2) acc1 l1l2) [] l2l1 ;;
 
cart_prod [1; 2; 3] ['a'; 'b'; 'c'] ;;
(* - : (charint * intchar) list = [(3, 'c', 3); (3, 'cb', 2); (3, 'ca', 1); (2, 'bc', 3); (2, 'b', 2); ('b'2, 1); ('a', 3); ('a'1, 2); ('ac', 1)];*)
cart_prod [1; 2; 3] [] ;;
(*- : ('a * int) list = [] *)
Anonymous user