typematch
type based pattern matching
Calling Sequence
Parameters
Description
Thread Safety
Examples
typematch(e, t)
typematch(e, t, 's')
e
-
any expression
t
any type, possibly augmented by :: operators
s
(optional) a name
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.
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.
typematch⁡x2,b::anythingn::integer,s
true
b=x,n=2
subs⁡s,n⁢bn−1
2⁢x
typematch⁡x2,b::anythingn::integer
b
x
n
2
n⁢bn−1
b≔b:n≔n:
typematch⁡x2,p::b::anythingn::integer,s
b=x,n=2,p=x2
typematch⁡x=1..2,v::name,v::name=algebraic..algebraic,s
v=x
typematch⁡1,2,3,4,5,list⁡v::integer,s
v=1,v=2,v=3,v=4,v=5
See Also
match
patmatch
select
type
Download Help Document