Named Modules - Maple Programming Help

Online Help

All Products    Maple    MapleSim


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

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.

• 

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

moduleMyModuleexporte;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.

moduleNamedModuleexporte1;end module:

useNamedModuleine1end use

NamedModule:-e1

(5)

UnNamedModulemoduleexporte2;end 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

num1:=moduleNumberexportn;end module

(7)

num2make3.5

num2:=moduleNumberexportn;end module

(8)

typenum1,'`module`'Number

true

(9)

typenum2,'`module`'Number,n::integer

false

(10)

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