Named Modules - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.
Our website is currently undergoing maintenance, which may result in occasional errors while browsing. We apologize for any inconvenience this may cause and are working swiftly to restore full functionality. Thank you for your patience.

Online Help

All Products    Maple    MapleSim


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

moduleMyModule_exporte;e2end module

moduleMyModuleexporte;end module

(1)

MyModule:-e

2

(2)

typeMyModule,protected

true

(3)

moduleaModuleend module

moduleaModuleend module

(4)

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.

moduleNamedModule_exporte1end module:

useNamedModuleine1end use

NamedModule:−e1

(5)

UnNamedModulemodule_exporte2end module:

useUnNamedModuleine2end use

e2

(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:

num1make2

num1moduleNumberexportn;end module

(7)

num2make3.5

num2moduleNumberexportn;end module

(8)

typenum1,`module`Number

true

(9)

typenum2,`module`Number,n::integer

false

(10)

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

moduleMmodule_localLend module;module_exportEend moduleend module:

See Also

local_scope

module

module/local

protect

type/module

type/moduledefinition