1. function Reduce_Recursive (A : Element_Array) return Element is 
  2.  
  3. begin 
  4.    return 
  5.      (if    A'Length = 1 then A (A'First) 
  6.       elsif A'Length = 2 then Combine (A (A'First), A (A'Last)) 
  7.                          else Combine (A (A'First), Reduce_Recursive (A (Index'Succ (A'First) .. A'Last)))); 
  8. end Reduce_Recursive;