To: J3 07-214 From: Michael Ingrassia Subject: generic functions and generic intrinsic procedures Date: 2007 May 04 A. Introduction --------------- In some ways "generic function" or "generic intrinsic procedure" is a misnomer because there is arguably no actual function, just a coordinated collection of specific functions sharing a generic name. It may be better always to speak in terms of "generic names" instead of "generic procedures", which is usually what is meant. There is a bewildering variety of ways to combine generic+binding+function+name+reference in the standard so any reduction in the number of distinct technical concepts that readers must comprehend is a priori a good thing. That a "generic function", whatever is meant, cannot in general be coded as a Fortran function is a subtle point which makes many sentences in the standard harder to interpret. Edits are supplied to eliminate references to generic function generic subroutine (I didn't find any) generic procedure generic intrinsic function (none without also "name") generic intrinsic subroutine (I didn't find any) generic intrinsic procedure in favor of generic binding generic binding reference generic function name generic function reference generic function-reference generic subroutine name generic subroutine reference generic procedure name generic identifier generic intrinsic function name generic intrinsic subroutine name generic intrinsic procedure name generic name generic name of an intrinsic function generic name of an intrinsic subroutine generic name of an intrinsic procedure generic name of a function generic name of a subroutine generic name of a procedure generic procedure binding generic procedure name generic procedure reference generic reference generic type-bound procedure name B. Edits --------------- All references are to 07-007r1. [vii] change 13.5 Standard generic intrinsic procedures to 13.5 Standard intrinsic procedures [99:2-3] change The INTRINSIC attribute specifies that the entity is an intrinsic procedure. It may be a generic to The INTRINSIC attribute specifies that the entity is an intrinsic procedure. It may be the name of a generic [99:7] change name of a generic intrinsic procedure to generic name of an intrinsic procedure [161:Table 7.13:5-6] change NOTE: The functions INT, REAL, CMPLX, and KIND are the generic functions defined in 13.7. to NOTE: The functions INT, REAL, CMPLX, and KIND are generic names of functions defined in 13.7. [162: Table 7.14:7-8] change Note: The functions BITS, INT, REAL, CMPLX, LOGICAL, and KIND are the generic functions defined in 13.7. to NOTE: The functions BITS, INT, REAL, CMPLEX, LOGICAL, and KIND are generic names of functions defined in 13.7. [303:NOTE 12.9:5] change generic procedures to generic procedure names [304:6] change generic procedure to generic procedure name [305:23] change name of a generic intrinsic procedure to generic name of an intrinsic procedure [305:24] change generic intrinsic procedure is not accessible to intrinsic procedure is not accessible by the generic name [305:26] change an accessible generic intrinsic procedure, to an accessible intrinsic procedure, [323:9] change the name of a generic intrinsic procedure; to the generic name of an intrinsic procedure; [324:NOTE 12.43:1] change of a generic procedure to with the same generic identifier [337:20-21] change In most cases, generic functions accept arguments of more than one type to In most cases, these generic names permit references with arguments of more than one type [338:2] change generic intrinsic procedures in 13.7 to intrinsic procedures in 13.7 [340:4] change 13.5 Standard generic intrinsic procedures to 13.5 Standard intrinsic procedures [346:9] change result type of the corresponding generic function to result type of the corresponding generic function-reference [347:2-3] change standard generic intrinsic procedures are provided here in alphabetical order. to standard intrinsic procedures are provided here in alphabetical order by generic name. [406:15] change to a generic procedure to a procedure invoked by a generic name [502:29] The reference to 4.5.2 here should probably be 4.5.5, but that arguably belongs in a different paper. [561:37] change valid reference to the generic procedure or binding, to valid generic procedure reference or generic binding reference [562:23] change generic procedures identified by names to generic procedure names [607:C543] change If the name of a generic intrinsic procedure to If the generic name of an intrinsic procedure