with ada.numerics.discrete_random; with ada.text_io; with array_sets; with list_sets; with abstract_sets; with Ada.Strings.Unbounded; procedure try is function to_string (i : integer) return string is begin -- to_string return integer'image(i); end to_string; package abstract_integer_sets is new abstract_sets (set_element => integer,to_string => to_string); package integer_array_sets is new Array_sets ( abstract_set_handling => abstract_integer_sets, to_string => to_string, set_element => integer); package integer_list_sets is new List_sets ( abstract_set_handling => abstract_integer_sets, to_string => to_string, set_element => integer); subtype int_1_10 is integer range 1 .. 10; package int_random is new ada.numerics.discrete_random ( result_subtype => int_1_10); gen : int_random.generator; set1,set2,set3 : integer_array_sets.set; setl1,setl2,setl3 : integer_list_sets.set; i : integer; begin -- try int_random.reset(gen); set1 := integer_array_sets.Empty; set2 := integer_array_sets.Empty; for j in 1..10 loop set1 := integer_array_sets.union(Left => set1, Right => integer_array_sets.unit(int_random.random(gen))); set2 := integer_array_sets.union(Left => set2, Right => integer_array_sets.unit(int_random.random(gen))); end loop; ada.text_io.put_line( integer_array_sets.to_string(set1)); ada.text_io.put_line( integer_array_sets.to_string(set2)); ada.text_io.put_line( integer_array_sets.to_string(integer_array_sets.union(set1,set2))); ada.text_io.put_line( integer_array_sets.to_string(integer_array_sets.intersection(set1,set2))); setl1 := integer_list_sets.Empty; setl2 := integer_list_sets.Empty; for j in 1..10 loop setl1 := integer_list_sets.union(Left => setl1, Right => integer_list_sets.unit(int_random.random(gen))); setl2 := integer_list_sets.union(Left => setl2, Right => integer_list_sets.unit(int_random.random(gen))); end loop; ada.text_io.put_line( integer_list_sets.to_string(setl1)); ada.text_io.put_line( integer_list_sets.to_string(setl2)); ada.text_io.put_line( integer_list_sets.to_string(integer_list_sets.union(setl1,setl2))); ada.text_io.put_line( integer_list_sets.to_string(integer_list_sets.intersection(setl1,setl2))); end;