Fortran Wiki Type coercion  Proposal: Support type coercion for
procedure call arguments.  Fortran has avoided type coercion for
procedure arguments partly due to legacy design issues. Support
for multiple types normally is provided in the form of multiple
specific procedures in a set of generic procedures.
Unfortunately, this design becomes very inefficient for
procedures with multiple arguments.  One argument against
automatic type coercion is that it will complicate generic-to-
specific procedure mappings, To avoid this problem, type
coercion could be an explicit interface attribute.  For example,
there could be an ACCEPT() attribute. Within the parenthesis is
a comma-delimited list of all acceptable coercion source type.
“KIND=’ indicates that any kind is allowed for that type, or
possibly only allow KINDs with equal or smaller capacities than
the actual type.