The essentials of this proposal go back in History. Old timers on J3 will
remember "the F-word" discussions much loved by Maureen Hoffert. It is also
an issue that I have raised several times since.
J3 has a basically theological thing about not allowing duplicate
declarartions (except in cases where they cannot be checked such as interface
definitions for external procedures!). I have long held the heretical view
that there is nothing wrong in duplicate declarations, especially when they
can be checked. The duplicates must of course declare identical objects with
identical attributes. This would be particularly useful when producing and
maintaining large modules with extensive generic overloads and procedures.
Physically the definitions for the generic interface blocks are necessarily a
long way away from the definition of the specific procedures. The details of
the interfaces are needed at the generic interface block code to enable the
correct overload resolution coding. The specific interface details are needed
at the point where the actual procedure is defined. This duplication if
allowed would greatly aid module writing and the resultant checking would
help maintenance. At present one tends to write the generic interface
definition code as comments to assist in the overload resolution design and
to simply use this code minus ! for the procedure coding. This is fine until
you need to make maintenance changes. The comments which are not checked
rapidly get out of step with the operative code and have to be removed.
I believe fully checked duplicate declaration would be a significant
improvement. It would simplify a significant amount of language description
and as has been indicated in this exchange has a number of functional
advantages. It may not fully solve Maureen's "Forward Reference" requirement
but it would reduce its impact.
On Thu, 15 Jun 2000 15:07:34 -0600 James Giles <[log in to unmask]>
wrote:
> Nils Smeds <[log in to unmask]> wrote:
>
> >Which makes the point I tried to make in the latest ACM Fortran Forum:
> >
> >- If it was allowed to USE the interface for the subroutine itself
> >in the subroutine declaration.
> >
> >- And if the language incorporated that when the subroutine contains an
> >interface to itself then the compiler must verify that the interface is
> >correct with respect to the actual declared dummy arguments.
> >
> >- Then the circle would be closed and the interface would be forced to be
> >coherent to the subroutine.
>
> I was promoting this idea a couple of years ago (either here or
> in the Fortran newsgroup). The response I got was that this was
> too cumbersome, since it required you to make the declarations
> of your procedure and its arguments in two different places.
> And, it still wouldn't guarantee that the interface would be
> properly checked - the programmer is merely on his honor
> to actually USE the interface module anyway. The impression
> I got was that this idea would never even be considered by
> the committee.
>
> I don't find either of the objections to the idea particularly
> compelling. They *are* legitimate objections though. Suppose
> you change the interface, but subsequently link to an old
> version of the actual code. This will cause you to use the
> program with a mismatched interface (unless you also have
> a load-time test - but with such a thing you could get by
> without interfaces entirely).
>
> --
> J. Giles
>
--
Lawrie Schonfelder
Director, Computing Services Dept.
The University of Liverpool, UK, L69 7ZF
Phone: 44(151)794 3716, Fax: 44(151)794 3759
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|