Error struct for general evaluation errors in Predicator evaluation.
This error occurs for runtime evaluation problems like division by zero, function call errors, or insufficient operands.
Fields
message- Human-readable error descriptionreason- Structured reason code for the erroroperation- The operation that failed (optional)position-{line, column}of the source token that produced the failing instruction, when a position table was available (optional)span- the source text the failing instruction's AST node covers, when the program was compiled with spans (optional).positionnames the token to blame;spanis what to underline.details- structured, error-specific data (optional, defaultnil), the same shapePredicator.Errors.LocationErroralready uses. It lets a host read machine-readable data off an error without parsingmessage, which is non-normative.
Examples
%Predicator.Errors.EvaluationError{
message: "Division by zero",
reason: "division_by_zero",
operation: :divide
}
%Predicator.Errors.EvaluationError{
message: "Function len() expects 1 arguments, got 0",
reason: "insufficient_arguments",
operation: :function_call
}
Summary
Functions
Creates an evaluation error for insufficient operands.
Creates an evaluation error.
Creates an evaluation error for a store refused by the :protected_roots
evaluation option.
Types
@type t() :: %Predicator.Errors.EvaluationError{ details: map() | nil, message: binary(), operation: atom() | nil, position: Predicator.Types.position() | nil, reason: binary(), span: Predicator.Types.span() | nil }
Functions
Creates an evaluation error for insufficient operands.
Creates an evaluation error.
Creates an evaluation error for a store refused by the :protected_roots
evaluation option.
details.root carries the offending root as data, so a host maps this onto
its own error vocabulary without matching on message (messages are
non-normative, docs/isa.md §2).