comp.lang.ada
 help / color / mirror / Atom feed
From: "Grein, Christoph" <christoph.grein@eurocopter.com>
Subject: Re: Generic default parameters
Date: Tue, 14 May 2002 06:57:52 +0200 (MET DST)
Date: 2002-05-14T06:57:52+02:00	[thread overview]
Message-ID: <mailman.1021352403.23591.comp.lang.ada@ada.eu.org> (raw)

> > 6. A more liberal matching of actual subprograms against formal ones.
> > If some parameters of the actual subrogram have defaults, then they
> > can be absent in the formal one.
> > 
> > generic
> >    with procedure Put (Item  : in Object) is <>;
> > package Foo ...
> > 
> > Then an instantiation with Integer_IO.Put:    <-------- #2
> > 
> > procedure Put
> > (  Item  : in Num;
> >    Width : in Field := Default_Width;
> >    Base  : in Number_Base := Default_Base
> > );
> > 
> > should be legal.
> 
> I like this. I don't see how it could be a problem.

I do see problems with this proposal. First of all it would be a major upwardly 
incompatible change and break old code - a NONO for the ARG.

Imagine Ada95 code that defines

  procedure Put (Item: in Num) is  -- #1
  begin
    Put (Item, Default_Width, Default_Base);  -- the Int_IO one, #2
  end Put;

  package Foo_Inst is new Foo;

Currently this is OK since only #1 matches. With this proposal, #1 and #2 would 
be candidates (assuming the latter is directly visible), so the compiler would 
not know which to take. This breakes old code.

OK, you could complicate the rules by stating that if there is a match without 
defaults, this one is preferred, then it would not break old code. But then you 
would introduce another case where adding or removing a declaration silently 
changes the code. We surely do not want another such rule.

[Beaujolais effect, where adding and removing a use clause changes the legal 
behaviour, has been removed from Ada with the 95 standard.
Sadly enough, a new effect has been introduced, where adding and removing a with 
clause can now change the legal behaviour (think of child packages) - isn't this 
called the Ripple effect?
We really do not want another such effect. If you think more closely about it, 
such a preference rule would reintroduce the Beaujolais effect.]

This being the case, it seems useless to discuss how matching rules for 
subprograms with defaulted parameters should be defined - they are not so 
obvious for me.




             reply	other threads:[~2002-05-14  4:57 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-05-14  4:57 Grein, Christoph [this message]
2002-05-14 10:23 ` Generic default parameters Dmitry A. Kazakov
  -- strict thread matches above, loose matches on Subject: below --
2002-05-14 11:03 Grein, Christoph
2002-05-14 12:01 ` Dmitry A. Kazakov
2002-05-14 14:05   ` Stephen Leake
2002-05-15  8:44     ` Dmitry A. Kazakov
2002-05-10 14:22 Thomas Wolf
2002-05-10 16:38 ` Preben Randhol
2002-05-10 16:50   ` Marin David Condic
2002-05-11  9:29     ` Simon Wright
2002-05-13 15:03       ` Hyman Rosen
2002-05-11 12:28     ` Preben Randhol
2002-05-13 14:03       ` Marin David Condic
2002-05-13 14:49       ` Hyman Rosen
2002-05-10 19:04   ` Hyman Rosen
2002-05-11 12:23     ` Preben Randhol
2002-05-11 13:49       ` Larry Kilgallen
2002-05-13 14:06       ` Marin David Condic
2002-05-10 19:27   ` Randy Brukardt
2002-05-11 12:32     ` Preben Randhol
2002-05-10 22:14 ` Stephen Leake
2002-05-13  7:49   ` Thomas Wolf
2002-05-13  8:49 ` Dmitry A. Kazakov
2002-05-13 14:00   ` Stephen Leake
2002-05-13 15:21     ` Dmitry A. Kazakov
2002-05-13 16:42       ` Stephen Leake
2002-05-14 10:24         ` Dmitry A. Kazakov
2002-05-14 14:02           ` Stephen Leake
2002-05-15 10:08             ` Dmitry A. Kazakov
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox