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

Online Help

All Products    Maple    MapleSim


typematch

type based pattern matching

 

Calling Sequence

Parameters

Description

Thread Safety

Examples

Calling Sequence

typematch(e, t)

typematch(e, t, 's')

Parameters

e

-

any expression

t

-

any type, possibly augmented by :: operators

s

-

(optional) a name

Description

• 

The typematch command is a boolean valued function. It returns true if the input expression e matches the type t. Normally the type t will contain pattern bindings, that is, expressions of the form vi::ti where v_i is a variable For example in the command typematch(e,v::name=range), the purpose of the v variable is to bind v with the corresponding name in the expression e . The typematch command has two different ways of returning the bound values, which are as follows.

• 

In command typematch(e, t), all pattern variables v_i in t are assigned the values as they are successfully matched. Thus the result of typematch(x=1..infinity, v::name=range) is true and v is assigned the name x.

• 

In command typematch(e, t, 's') if the match is successful, a list of equations of the form vi=ri is assigned the parameter s which represents the variables and their matched values. Thus the result of typematch(x=1..infinity, v::name=range, 's') is true and s is assigned the list v=x.

• 

Note that the arguments to the pattern binding operator :: are evaluated. Thus if the variable x may have been assigned a value, for example, in a previous typematch command, then it is necessary to use quotes. That is typematch(e,'x'::name=range).

• 

For more information about the precedence of the pattern binding "::" operator in relation to other operators, see operators/precedence.

Thread Safety

• 

The typematch command is thread safe as of Maple 15, provided that s, if used, is not shared between threads.

• 

For more information on thread safety, see index/threadsafe.

Examples

typematchx2,b::anythingn::integer,s

true

(1)

s

b=x,n=2

(2)

subss,nbn1

2x

(3)

typematchx2,b::anythingn::integer

true

(4)

b

x

(5)

n

2

(6)

nbn1

2x

(7)

bb:nn:

typematchx2,p::b::anythingn::integer,s

true

(8)

s

b=x,n=2,p=x2

(9)

typematchx=1..2,v::name,v::name=algebraic..algebraic,s

true

(10)

s

v=x

(11)

typematch1,2,3,4,5,listv::integer,s

true

(12)

s

v=1,v=2,v=3,v=4,v=5

(13)

See Also

match

patmatch

select

type