up previous next
3.9.2 First Example of a Package
The following is an example of a package. It could be typed into a window as-is during a CoCoA session, but we will assume that it is stored in a file in the CoCoA directory under the name one.cpkg.

Example
  Package $contrib/toypackage

  Define IsOne(N)
    If N = 1 Then Return TRUE Else Return FALSE EndIf;
  EndDefine;
  
  Define Test(N)
    If $.IsOne(N) Then
      Print "The number 1."
    Else
      Print "Not the number 1."
    EndIf;
  EndDefine;
  
  EndPackage; -- of toypackage
Below is output from a CoCoA session in which this package was used:

Example
  -- read in the package:
  Source "one.cpkg";
  Test(1);  -- error here because the function "Test" is not defined

-------------------------------
ERROR: Unknown operator Test
CONTEXT: Test(1)
-------------------------------
  $contrib/toypackage.Test(1); -- this is the name of the function
                               -- we are looking for
The number 1.
-------------------------------
  Alias Toy := $contrib/toypackage;  -- use an alias to save typing
  Toy.Test(3);
Not the number 1.
-------------------------------
  Toy.IsOne(3);
FALSE
-------------------------------
Once the package is read, the user can choose a substitute prefix using the Alias command and in that way avoid conflicts between functions in various packages and save on typing.

Note one other thing: the function IsOne is used in the definition of Test. In that case, it is referred to as $.IsOne. Otherwise, CoCoA would look for a global function, outside of the package, called IsOne. Forgetting this kind of reference is a common source of errors when constructing a package.