Named Modules - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

Home : Support : Online Help : Programming : Modules : Named Modules

Named Modules

 

Calling Sequence

Description

Examples

Calling Sequence

module ModuleName() export eseq; local lseq; global gseq; option optseq; description desc; statseq end module

Description

• 

In some circumstances, it may be necessary for module members to "know" what module they belong to. For this reason, you can create a named module, using a slightly modified syntactic form of a module definition. It differs from the ordinary syntax only in the placement of a name between the module keyword and the parentheses that follow it.

• 

Evaluating a named module definition causes, as a side effect, the assignment of the resulting module to the name, and the module name is stored in the attributes of each module member.

  

Note: This causes the specified name to be protected. Thus, evaluating a global named module definition more than once will generate an error. Evaluating a local definition in separate invocations of a procedure will produce multiple named modules, each with a separate (but identical looking) protected name.

• 

When declaring a local or exported named module, the declaration of the name and module can be combined into a single declaration. The name does not need to be declared separately before associating it with the module definition.

• 

Named modules are also used by the system for some purposes. Every module that is saved to a repository is given a name (that under which it was saved) for use by the persistent store.

• 

The name of a named module, written as a string, can also be used as the first argument to the `module`(...) type. This indicates that the type should only match modules that have the specified name.

Examples

(1)

(2)

(3)

(4)

Error, (in aModule) attempting to assign to `aModule` which is protected.  Try declaring `local aModule`; see ?protect for details.

One reason for introducing named modules is so that the following distinction may be made when printing module member names in certain cases.

(5)

(6)

Module names can be used to check that different module instances were created by some common definition.

make := proc(x)
    local Number;
    module Number() export n; end module;
    Number:-n := x;
    Number
end proc:

(7)

(8)

(9)

(10)

Local or exported named modules can be written in the names' declarations.

See Also

local_scope

module

module/local

protect

type/module

type/moduledefinition

 


Download Help Document