generic
type Element is private;
package Generic_List_Ops is
type List_Of_Elements is array (Integer range <>) of Element;
generic
with function "*" (Left, Right : Element) return Element is <>;
function Product (List : List_Of_Elements) return Element;
generic
with function "+" (Left, Right : Element) return Element is <>;
function Sum (List : List_Of_Elements) return Element;
Empty_List : exception;
end Generic_List_Ops;