
7.11 MAP Operator
The MAP operator applies a uniform evaluation pattern to all members of a composite
structure: a matrix, a list, or the arguments of an operator expression. The evaluation
pattern can be a unary procedure, an operator, or an algebraic expression with one free
variable.
It is used with the syntax:
MAP(FNC:function,OBJ:object)
Here OBJ is a list, a matrix or an operator expression. FNC can be one of the
following:
- the name of an operator with a single argument: the operator is evaluated
once with each element of OBJ as its single argument;
- an algebraic expression with exactly one free variable, i.e. a variable
preceded by the tilde symbol. The expression is evaluated for each element
of OBJ, with the element substituted for the free variable;
- a replacement rule of the form var => rep where var is a variable (a
kernel without a subscript) and rep is an expression that contains var. The
replacement expression rep is evaluated for each element of OBJ with the
element substituted for var. The variable var may be optionally preceded
by a tilde.
The rule form for FNC is needed when more than one free variable occurs.
Examples:
map(abs,{1,-2,a,-a}) -> {1,2,ABS(A),ABS(A)}
map(int(~w,x), mat((x^2,x^5),(x^4,x^5))) ->
[ 3 6 ]
[ x x ]
[---- ----]
[ 3 6 ]
[ ]
[ 5 6 ]
[ x x ]
[---- ----]
[ 5 6 ]
map(~w*6, x^2/3 = y^3/2 -1) -> 2*X^2=3*(Y^3-2)
You can use MAP in nested expressions. However, you cannot apply MAP to a
non-composite object, e.g. an identifier or a number.