1. generic 
  2.  
  3.    type Element       is private; 
  4.    type Index         is (<>); 
  5.    type Element_Array is array (Index range <>) of Element; 
  6.  
  7.    with function Combine (Left, Right : Element) return Element is <>; 
  8.  
  9. function Reduce_Iterative (A : Element_Array) return Element;