[ Arithmetic | The ECLiPSe Built-In Predicates | Reference Manual | Alphabetic Index ]

# eval(+Expression, -Result)

Used to evaluate eval/1 terms in arithmetic expressions.

Expression
  An arithmetic expression.
Result
  A variable or a number.

## Description

This is one of the predicates used by the ECLiPSe compiler to expand arithmetic expressions. If an expression contains a subexpression that is not known at compile time, it must be wrapped in eval/1, e.g.

       X is eval(Expr)+1

This will be compiled into the sequence

       eval(Expr,T1), +(T1,1,X)

and eval/2 will interpret the expression Expr at runtime.

### Modes and Determinism

- eval(+, -) is det

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).

### Exceptions

(4) instantiation fault
  Expression is uninstantiated.
(5) type error
  Result is neither a number nor a variable.
(5) type error
  Evaluation of Expression gives a different type than Result.
(21) undefined arithmetic expression
  An evaluation predicate in the expression is not defined.
(24) number expected
  Expression is not a valid arithmetic expression.

## Examples

## See Also

is / 2