(j3.2006) Specification functions
Steidel, Jon L
jon.l.steidel
Fri Feb 24 22:18:00 EST 2017
Right, not to mention you cannot call a function before it's fully defined.
> -----Original Message-----
> From: j3-bounces at mailman.j3-fortran.org [mailto:j3-bounces at mailman.j3-
> fortran.org] On Behalf Of Van Snyder
> Sent: Friday, February 24, 2017 6:48 PM
> To: j3 at mailman.j3-fortran.org
> Subject: Re: (j3.2006) Specification functions
>
> We removed the prohibition against recursive specification functions quite a
> while ago. There would be a problem, a never-ending recursion, if a
> specification function were to invoke the procedure in which a reference to
> it appears.
>
> On Fri, 2017-02-24 at 22:01 +0000, Steidel, Jon L wrote:
> > References are to F2008 document (10-007r1)
> >
> > In section7.1.11 Specification expressions, paragraph 5 states
> >
> > "A function is a specification function if it is a pure function, is
> > not a standard intrinsic function, is not an internal function, is not
> > a statement function, and does not have a dummy procedure argument."
> >
> > Paragraph 5 goes on
> >
> > "Evaluation of a specification expression shall not directly or
> > indirectly cause a procedure defined by the subprogram in which it
> > appears to be invoked."
> >
> > Note 7.32 which follows ends with a sentence
> >
> > "The prohibition against recursion avoids the creation of a new
> > instance of a procedure while construction of one is in process."
> >
> > Nowhere in this section is there a prohibition against a recursive
> > specification expression. I scanned for occurrences of "recursi" and
> > "specification expression" and found no prohibition of this elsewhere
> > in the document. I checked "Pure subprograms" and it appears a PURE
> > subprogram may be recursive. Should "is not a recursive function,"
> > be added to the list in paragraph 5? Or should the last sentence of
> > note 7.32 be deleted?
> >
> > F2015 reads the same. Since recursion is the default in 2015,
> > specification functions in existing programs will need to be declared
> > NONRECURSIVE if we really intended to disallow recursive specification
> > functions.
> >
> > I see no harm in a recursive function being used to specify a
> > dimension in an automatic array.
> >
> > -jon
> >
> > _______________________________________________
> > J3 mailing list
> > J3 at mailman.j3-fortran.org
> > http://mailman.j3-fortran.org/mailman/listinfo/j3
>
>
> _______________________________________________
> J3 mailing list
> J3 at mailman.j3-fortran.org
> http://mailman.j3-fortran.org/mailman/listinfo/j3
More information about the J3
mailing list