Named Modules - Maple Help

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Programming : Modules : module/named

Named Modules

Calling Sequence

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



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.


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.


moduleMyModuleexporte;e:=2end module

moduleMyModuleexporte;end module








moduleaModuleend module

moduleaModuleend module


moduleaModuleend module

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.

moduleNamedModuleexporte1;end module:

useNamedModuleine1end use



UnNamedModule:=moduleexporte2;end module:

useUnNamedModuleine2end use



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;
end proc:


num1:=moduleNumberexportn;end module



num2:=moduleNumberexportn;end module








See Also

module, protect, type[module], type[moduledefinition]

Download Help Document

Was this information helpful?

Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam