MutableSet - Maple Programming Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Programming : Operations : Sets and lists : MutableSet

MutableSet

an object-based mutable set

 

Description

Examples

Compatibility

Description

• 

The MutableSet appliable object provides an efficient means to construct, manipulate, and query set objects.

• 

Unlike a standard Maple set, adding an element to a MutableSet object does not allocate a new container.  As such, it can be efficiently used in loops to build up a set an element at a time.

Construction

• 

The MutableSet command returns a new MutableSet object.

  

If called with a single argument that is either a Maple set or a MutableSet object, the returned object contains the elements in the argument.

  

Otherwise, the returned object contains each distinct argument as an element.

Modification

• 

The following commands modify the content of a MutableSet object. The ms argument denotes a MutableSet object.

  

clear(ms) : clear ms

  

delete(ms,value) : delete value from ms

  

insert(ms,value) : insert value into ms

Set Operation

  

The following set commands combine MutableSet objects. Those prefixed with an ampersand (&) operate inplace on the first argument. These commands can be invoked as functions or inline operators. The ms1 and ms2 arguments denote MutableSet objects.

  

ms1 intersect ms2, or ms1∩ms2, or `intersect`(ms1,ms2,...) : return a new MutableSet object that is the intersection of the given mutable sets

  

ms1 &intersect ms2 or `&intersect`(ms1,ms2,...) : remove elements of ms1 that are not elements of ms2, etc., updating ms1

  

ms1 minus ms2, or ms1∖ms2, or `minus`(ms1,ms2) : return a new MutableSet object that contains the set difference of ms1 and ms2

  

ms1 &minus ms2 or `&minus`(ms1,ms2) : remove elements of ms2 from ms1, updating ms1

  

ms1 union ms2, or ms1∪ms2, or `union`(ms1,ms2,...) : return a new MutableSet object that is the union of the given mutable sets

  

ms1 &union ms2 or `&union`(ms1,ms2,...) : combine the members of ms2, etc., with ms1, updating ms1

Inspection

  

The following commands inspect the content of a MutableSet object. The ms, ms1, and ms2 arguments denote MutableSet objects.

  

ms = other or `=`(ms,other): when evaluated in a boolean context, return true if ms and other are both MutableSet objects with identical content, false otherwise

  

empty(ms) : return true if ms is empty; false otherwise

  

has(ms,expr) : return true if any member of ms contains expr; false otherwise

  

hastype(ms,typ) : return true if any member of ms contains an expression of the specified type; false otherwise

  

`in`(value,ms), or value in ms, or value∈ms : return true if value is a member of ms; false otherwise

  

indets(ms,typ) : return a Maple set of all indeterminates in ms; if the optional typ parameter is specified, then return the expressions of type typ.

  

lowerbound(ms) : return the lower index bound (always 1)

  

max(ms) : return the maximum element of ms. Behaves like max on sets.

  

member(value,ms) : return true if  value is a member of ms; false otherwise.  The three argument form of member is not supported.

  

min(ms) : return the minimum element of ms.  Behaves like min on sets.

  

numelems(ms) : return the number of elements in ms

  

numboccur(ms,expr) : count the number of occurrences of expr in ms, either as an element or within elements.

  

`subset`(ms1,ms2), or ms1 subset ms2, or ms1⊆ms2 : return true if ms1 is a subset of ms2; false otherwise

  

upperbound(ms) : return the upper index (same as the output of numelems)

map and subs

  

The map and subs commands operate on a MutableSet object; see their help pages for the complete syntax. By default they create a new MutableSet object, but if called with the inplace index option, they update the MutableSet object. The ms argument denotes a MutableSet object.

  

map(fcn,ms) : apply a procedure, fcn, to each element of ms

  

subs(eqns,ms) : substitute subexpressions in the content of ms

Conversion

  

The convert command can be used to convert a MutableSet object to and from other Maple structures.

  

convert(ms,typ) : convert a MutableSet to the specified type

  

convert(expr,MutableSet) : convert expr to a MutableSet object; expr must be a list, set, or rtable

Indexing

  

Integer indices can be used to extract or reassign a single element of a MutableSet. Reassigning an element may change its index.

  

Range indices are not supported.

Iteration

  

The MutableSet object exports a ModuleIterator command; that allows a MutableSet object to be used in loops and iterations (seq, add, etc.).

Examples

Construction

  

Create a MutableSet with three elements.

M1MutableSeta,b,c

M1MutableSeta,b,c

(1)
  

Copy M1.

M2MutableSetM1

M2MutableSeta,b,c

(2)
  

Create a MutableSet from a Maple set.

M3MutableSetb,c,d

M3MutableSetb,c,d

(3)

Modification

  

Delete the b element from M1 and insert a d element.

deleteM1,b

MutableSeta,c

(4)

insertM1,d

MutableSeta,c,d

(5)
  

Add c to each element in M2; do so inplace.

map[inplace]`+`,M2,c

MutableSeta+c,b+c,2c

(6)
  

Replace all occurrences of c inside M2 with d; do so inplace.

subs[inplace]c=d,M2

MutableSet2d,a+d,b+d

(7)

Operation

  

Create two MutableSet objects, then form their intersection.

M1MutableSeta,b,c,d

M1MutableSeta,b,c,d

(8)

M2MutableSetc,d,e,f

M2MutableSetc,d,e,f

(9)

M3M1∩M2

M3MutableSetc,d

(10)
  

Use the inplace form to update M1 with the intersection of M1 and M2.

M1 &intersect M2:

M1

MutableSetc,d

(11)

Inspection

  

Use member to determine whether a given element is a member of M1.

M1MutableSeta,b,c,4

M1MutableSet4,a,b,c

(12)

memberb,M1

true

(13)
  

Use has to test for the occurrence of a subexpression in any of the members of the set.

hasM1,c

true

(14)

indetsM1,numeric

4

(15)

Conversion

  

Create a MutableSet object by converting a Vector.

M1convertVector10,symbol=v,MutableSet

M1MutableSetv1,v2,v3,v4,v5,v6,v7,v8,v9,v10

(16)
  

Convert M1 to a standard set.

convertM1,set

v1,v2,v3,v4,v5,v6,v7,v8,v9,v10

(17)

Indexing

  

Use indexing to extract each element of a MutableSet.

M1MutableSeta,b,c,d

M1MutableSeta,b,c,d

(18)

seqi=M1i,i=1..numelemsM1

1=a,2=b,3=c,4=d

(19)
  

Reassign the value of the second index. Note that in the updated MutableSet, the new value is assigned a different index.

M1223:

seqi=M1i,i=1..numelemsM1

1=23,2=a,3=c,4=d

(20)

Iteration

  

Iterate through each element in M1.

seqx,x∈M1

23,a,c,d

(21)
  

Add the elements of M2.

addx,x∈M2

c+d+e+f

(22)

forxinM2doprintxend do

c

d

e

f

(23)

Usage

  

The MutableSet object provides an efficient way to construct a set an element at a time, in a loop.  Doing so with standard Maple sets is inefficient in that each addition creates a new set; as such the operation is On2 in time and memory, where n is the number of elements. The following compares the memory and time required to create a set of ten thousand elements using standard sets and a MutableSet object.

MapleSets := proc(n :: posint)
 local i, s;
    s := {};
    for i to n do
        s := s union {i};
    end do:
    numelems(s);
end proc:
MutableSets := proc(n :: posint)
local i, s;
    s := MutableSet();
    for i to n do
        insert(s,-i);
    end do;
    numelems(s);
end proc:

CodeTools:-UsageMapleSets10000

memory used=382.93MiB, alloc change=27.48MiB, cpu time=1.74s, real time=1.72s, gc time=236.66ms

10000

(24)

CodeTools:-UsageMutableSets10000

memory used=1.15MiB, alloc change=0 bytes, cpu time=60.00ms, real time=58.00ms, gc time=0ns

10000

(25)

Compatibility

• 

The MutableSet object was introduced in Maple 2016.

• 

For more information on Maple 2016 changes, see Updates in Maple 2016.

See Also

Object

set

 


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