From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 103376,ec14cedca2cdf8ac X-Google-Attributes: gid103376,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Why isn't this ambiguous? Date: 1997/08/02 Message-ID: #1/1 X-Deja-AN: 261879803 References: <199708011539.RAA04612@basement.replay.com> Organization: New York University Newsgroups: comp.lang.ada Date: 1997-08-02T00:00:00+00:00 List-Id: Here is my best guess at what Jeff Carter meant: with Ada.Text_Io; use Ada; procedure F_Test is subtype I_Num is Integer range 1 .. 5; subtype O_Num is Integer range 0 .. 99_999; function Image (I : I_Num) return Character is Img : constant String := Integer'Image (I); begin Text_Io.Put_Line ("This is Image 1"); return Img (Img'Last); end Image; function Make (I : I_Num; O : O_Num) return String is function Image (O : O_Num) return String is Img : String := Integer'Image (O); begin Text_Io.Put_Line ("This is Image 2"); Img (Img'First) := '0'; if Img'Length > 5 then return Img (Img'First + 1 .. Img'Last); end if; return (1 .. 5 - Img'Length => '0') & Img; end Image; begin return Image (I) & '_' & Image (O); end Make; begin Text_Io.Put_Line (Make (2, 1) ); Text_Io.Put_Line (Make (3, 1_000) ); end F_Test; If this guess is right, the above program is definitely illegal due to the ambiguity in the calls to the Image function, since I_Num and O_Num are the same type.