122  Pascal User Manual  Be careful  of applying  recursive  techniques  indiscriminately.  Although appearing "clever,"  the~  do not always produce the most  computationally efficient solutiom.  If a procedure p activates a procedure  Q  and  Q  also activates P, and  neither is declared within the other, then either  p  or Q must be declared  in  aforward declaration  (Section  II.C).  The  predeclared procedures  in Appendix A are provided in every  implementation of Standard Pascal, Any implementation may feature  additional predeclared procedures. Since they are, as all predeclared  and predefined objects, assumed to have a scope surrounding the user  program, no conflict arises from  ;11 declaration redefining the same  identifier within the program.  Predeclared procedures may n<)t be passed as actual procedural  parameters.  Functions  are program parts (in the same sense as procedures) which  compute a single ordinal, real, or pointer value for use in the evaluation  of an expression.  Afunction desigllator  specifies the activation of a  function and consists of the identifier denoting the function and a list of  actual  parameters.  The  parameters  are  variables,  expressions,  procedures, or functions and are substituted for the corresponding  formal parameters.  The function declaration has the·,ame form as the program, with the  exception  ofthefunction heading  which has the form:  11.B.  Functions  Figure ll.j  Syntax diagrlll11 for  FunctionHeading  As in the case of procedures, the lahels in the label declaration part  and all identifiers introduced in the constant definition part, the type  definition part, the variable, procedUl'c, or function declaration parts are  local  to the function declaration,  v.  hich is called the  scope  of these  objects.  They are not known outsid,:' their scope.  The values of local 