typematch - Maple Help

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