assigned - Maple Programming Help

Home : Support : Online Help : Programming : Operations : Assignment : assigned

assigned

check if a name is assigned

 Calling Sequence assigned(n) assigned(n, val)

Parameters

 n - name, subscripted name, or function call val - name, assignable

Description

 • The assigned function returns true if n has a value other than its own name, and returns false otherwise.
 Note: The assigned function returns true if you have placed assumptions on n using the assume command.
 • This function is one of the exceptions to the normal evaluation rule for arguments of a function. The argument to assigned will only be evaluated as a name (see the evaln function) rather than fully evaluated.
 • The definition of assigned for array/table subscripts is

$\mathrm{assigned}\left({A}_{i}\right)=\mathrm{evalb}\left({A}_{i}\ne \mathrm{evaln}\left({A}_{i}\right)\right)$

 • The definition of assigned for function calls is

$\mathrm{assigned}\left(f\left(x\right)\right)=\mathrm{evalb}\left(f\left(x\right)\ne \mathrm{evaln}\left(f\left(x\right)\right)\right)$

 • If an optional second argument is provided, then that parameter is set to the assigned value of n.  This allows the assignment-check and fetch of the value to be done in a single command, which can be important in threaded applications with shared data, and when using weak tables.

 • The assigned command is thread-safe as of Maple 15.

Examples

 > $n≔4$
 ${n}{≔}{4}$ (1)
 > $\mathrm{assigned}\left(n\right)$
 ${\mathrm{true}}$ (2)
 > $\mathrm{assigned}\left(n,'\mathrm{nval}'\right)$
 ${\mathrm{true}}$ (3)
 > $\mathrm{nval}$
 ${4}$ (4)

Table lookups can return unevaluated; using assigned or comparing against evaln of the indexed name will distinguish between a unevaluated lookup and a found value.

 > $a≔\mathrm{table}\left(\mathrm{symmetric}\right)$
 ${a}{≔}{table}{}\left({\mathrm{symmetric}}{,}\left[\right]\right)$ (5)
 > $a\left[1,2\right]≔x$
 ${{a}}_{{1}{,}{2}}{≔}{x}$ (6)
 > $\mathrm{assigned}\left(a\left[1,2\right]\right)$
 ${\mathrm{true}}$ (7)
 > $\mathrm{assigned}\left(a\left[2,1\right]\right)$
 ${\mathrm{true}}$ (8)
 > $\mathrm{assigned}\left(a\left[1,1\right]\right)$
 ${\mathrm{false}}$ (9)
 > $\mathrm{assigned}\left(\mathrm{abs}\left(x\right)\right)$
 ${\mathrm{false}}$ (10)
 > $\mathrm{assigned}\left(\mathrm{abs}\left(2\right)\right)$
 ${\mathrm{true}}$ (11)

assigned will evaluate the function to determine if it will return itself or not

 > f := proc(x) if(x::integer,x^2,'procname'(x)) end:
 > $\mathrm{assigned}\left(f\right)$
 ${\mathrm{true}}$ (12)
 > $\mathrm{assigned}\left(f\left(x\right)\right)$
 ${\mathrm{false}}$ (13)
 > $\mathrm{assigned}\left(f\left(2\right)\right)$
 ${\mathrm{true}}$ (14)

If you place an assumption on a name using the assume command, the assigned command returns true for that name.

 > $\mathrm{assigned}\left(b\right)$
 ${\mathrm{false}}$ (15)
 > $\mathrm{assume}\left(b,\mathrm{positive}\right)$
 > $\mathrm{assigned}\left(b\right)$
 ${\mathrm{true}}$ (16)

Note: Evaluating an assigned call under an assumption (using the assuming command), returns true for a name only if it has a value different from its name.

 > $\mathrm{assigned}\left(c\right)\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}\mathbf{assuming}\phantom{\rule[-0.0ex]{0.3em}{0.0ex}}c::'\mathrm{integer}'$
 ${\mathrm{false}}$ (17)

Compatibility

 • The assigned command was updated in Maple 2019.
 • The val option was introduced in Maple 2019.