1. generic 
  2.  
  3.    type Discrete_Type is (<>); 
  4.  
  5. package Modulo_Discrete_Type is 
  6.  
  7.    function Succ_Mod (D : Discrete_Type) return Discrete_Type is 
  8.      (if D = Discrete_Type'Last then Discrete_Type'First else Discrete_Type'Succ (D)); 
  9.  
  10.    function Pred_Mod (D : Discrete_Type) return Discrete_Type is 
  11.      (if D = Discrete_Type'First then Discrete_Type'Last else Discrete_Type'Pred (D)); 
  12.  
  13. end Modulo_Discrete_Type;