with Ada.Text_Io; use Ada.Text_Io; procedure Nested is function F (X: Integer; Y: Integer) return Integer is function G (Y: Integer) return Integer is begin if (Y > 0) then return 1 + G(Y-1); else return X; end if; end G; begin return G (Y); end F; begin Put_Line (Integer'Image (F(3,2))); end Nested;