generic type T is limited private; with function toString ( x: T ) return STRING; procedure Kiir ( x: in T ); with text_io; procedure Kiir ( x: in T ) is begin text_io.Put_Line(toString(x)); end Kiir; with Kiir; procedure Demo is function Int2Str ( i: INTEGER ) return STRING is begin return INTEGER'Image(i); end Int2Str; procedure IntKiir is new Kiir(INTEGER,Int2Str); begin IntKiir(12); end Demo;