### 12.4 The Let Command

If you have an expression like ‘`a+b^2`’ on the stack and you wish to
compute its value where ‘`b=3`’, you can simply store 3 in ‘`b`’ and
then press `=` to reevaluate the formula. This has the side-effect
of leaving the stored value of 3 in ‘`b`’ for future operations.

The `s l` (`calc-let`

) command evaluates a formula under a
*temporary* assignment of a variable. It stores the value on the
top of the stack into the specified variable, then evaluates the
second-to-top stack entry, then restores the original value (or lack of one)
in the variable. Thus after `' a+b^2 ``RET` 3 s l b `RET`,
the stack will contain the formula ‘`a + 9`’. The subsequent command
`5 s l a ``RET` will replace this formula with the number 14.
The variables ‘`a`’ and ‘`b`’ are not permanently affected in any way
by these commands.

The value on the top of the stack may be an equation or assignment, or
a vector of equations or assignments, in which case the default will be
analogous to the case of `s t ``RET`. See Storing Variables.

Also, you can answer the variable-name prompt with an equation or
assignment: `s l b=3 ``RET` is the same as storing 3 on the stack
and typing `s l b ``RET`.

The `a b` (`calc-substitute`

) command is another way to substitute
a variable with a value in a formula. It does an actual substitution
rather than temporarily assigning the variable and evaluating. For
example, letting ‘`n=2`’ in ‘`f(n pi)`’ with `a b` will
produce ‘`f(2 pi)`’, whereas `s l` would give ‘`f(6.28)`’
since the evaluation step will also evaluate `pi`

.