CoCoA:Define

From ApCoCoAWiki

Define

define a function

Description

1. INTRODUCTION. This command adds the user-defined function F to the

library. The function F can be called in the following way:

<verbatim>

   F(E_1,...,E_n)

</verbatim> where the E_i's are expressions. The result of the evaluation of each expression E_i is assigned to the respective formal parameter X_i, and the command sequence C is executed. If, during the execution of C, a statement Return E is executed, then the result of the evaluation of E is the return-value of the function F. If no Return command is executed, or Return is executed without argument, then the return-value is Null.

Example

  Define Square(X)
    Return X^2;
  EndDefine;

  Square(5);
25
-------------------------------

2. SCOPE. Every variable defined or modified by the command sequence C is considered local to the function unless the variable is global or relative to a Var parameter. For the use of global variables, see Global Memory or the example below. See Var to learn about calling a function by reference, i.e. so that the function can change the value of an existing variable.

Example

  Define Example_1(L)
    L := L + 5;
    Return L;
  EndDefine;
  L := 0;
  Example_1(L);
5
-------------------------------
  L;  -- L is unchanged despite the function call.
0
-------------------------------
  Define Example_2(L)  -- Example using a global variable.
    MEMORY.X := L + 3;
  EndDefine;
  Example_2(10);
  MEMORY.X;
13
-------------------------------

3. VARIABLE NUMBER OF PARAMETERS. It is also possible to have a variable number of parameters using the syntax <verbatim>

   Define F(...) Help S:STRING; C EndDefine;

</verbatim> In this case the special variable ARGV will contain the list of the arguments passed to the function. (The statement, Help S; is optional.)

Example

  Define Sum(...)
    If Len(ARGV) = 0 Then Return Null;  -- empty sum
    Else
      Sum := 0;
      Foreach N In ARGV Do Sum := Sum+N EndForeach;
    EndIf;
    Return Sum;
  EndDefine;
  Sum(1,2,3,4,5);
15
-------------------------------
  Sum();
Null
-------------------------------

4. SHORTCUT. The form F(X_1,...,X_n) := E is discouraged and may be discontinued in later versions of CoCoA. If is shorthand for Define F(X_1,...X_n) Return E EndDefine;.

Example

  F(X) := X^2;
  F(5);
25
-------------------------------

5. HELP. Inside a user-defined function, one may add the command: <verbatim>

 Help S;

</verbatim> where S is a string. Then, when a user enters Help("F") where F is the identifier for the function, the string, S, is printed.

Example

  Define Test(N)
    Help <quotes>Usage: Test(N:INT):INT</quotes>;
    Return N;
  EndDefine;
  Help <quotes>Test</quotes>;
Usage: Test(N:INT):INT
-------------------------------

6. DEFINING RINGS INSIDE FUNCTIONS. For information on this topic, please see the section of the tutorial entitled, [[Rings Inside User-Defined Functions]]

Syntax

Define F(X_1,...,X_n) Help S:STRING; C EndDefine
F(X_1,...,X_n) := E   -- obsolescent!
Define F(...) Help S:STRING; C EndDefine

where F is an identifier, C is a sequence of commands, the X_i's are
formal parameters and E is an expression.  The third form, which
literally includes the string <tt>...</tt> is used for a variable number of
parameters.  The optional <tt>Help S</tt>, where S is a string, may be added
to provide help for the user.

An Overview of CoCoA Programming

Introduction to User-Defined Functions

Memory Management

Return

Rings Inside User-Defined Functions

Var

   <type>function</type>
   <type>programming</type>