Thanks much for your follow-up.
On Fri, Mar 23, 2018 at 5:36 PM, Bill Long <[log in to unmask]> wrote:
> The disambiguation problem could be avoided if the specific added by the separate generic interface had a second argument of type integer, rather than type(t).
Why a second argument of type integer? Or did you mean any other type
that can be disambiguated from type(t)? But note a coder's use case
may call for the second argument to be of type(t) or class(t)
> .. if the resolution of the generic in the type is limited to type-bound procedures, ..
I can't see how that's even possible or will make sense, but I'll
leave it up to the committees.
> .. It seems worthwhile to have a discussion about what sort of environment we want to ensure for OOP programmers. And clearly state the intent in the standard.
I agree wholeheartedly. It'll be extremely valuable if those on the
committees have thorough discussions on support in the language for
the OO paradigm, for OO is too important for coders to fully realize
structured programming approaches and solutions for their code,
particularly as the applications become larger and strive to solve or
attempt bigger and more complex problems or simulations.
I especially like your comment about the "state the intent in the standard".
As things stand, I view the Fortran standard support for OO to be
beset with Meatloafism: lack of clarity ends up promising a lot and
gives the coder an initial impression, "I can do anything for OO" only
to be cut down "but I can't do that"!! :-)
Issues with generic binary operations and the one with defined
assignments as indicated here, lack of 'move semantics', limitations
on account of two attributes (PUBLIC/PRIVATE) when it comes to scope
of a derived type component/binding, insufficient granting of
namespace-like features to MODULEs (or a separate NAMESPACE facility
for that matter), structure/type constructor support, etc. are all
areas I think Fortran needs to improve upon with respect to OO.
I've been highly disappointed with Fortran 2008 and 2018 revisions in
terms of enhancements/fixes toward OO support