Kernel-E

Kernel-E is the subset of the E language which is understood by evaluators. Full E is converted to Kernel-E by expansion.

Node classes
The following node types may occur in a Kernel-E program. The hierarchy indicates subtype relationships.


 * ENode (abstract)
 * EExpr (abstract) — evaluate to a value
 * AssignExpr — assignment
 * BindingExpr (given guard-based auditing) — extract binding of a noun
 * CallExpr
 * CatchExpr
 * DefineExpr — match a pattern against a value
 * EscapeExpr — nonlocal exits
 * FinallyExpr — cleanup block
 * HideExpr
 * IfExpr
 * LiteralExpr
 * MetaContextExpr
 * MetaStateExpr
 * NounExpr
 * ObjectExpr — create an object
 * SeqExpr — evaluate in order, return last value
 * UnspecifiedExpr — placeholder for signature redactions
 * Pattern (abstract) — match a value and succeed or fail
 * NounPattern — patterns which bind one noun
 * BindingPattern (given guard-based auditing) — bind to a given binding object
 * FinalPattern — bind to a FinalSlot with a given value
 * VarPattern — bind to a VarSlot or GuardedSlot with a given value
 * IgnorePattern — discard value, possibly testing with a guard first
 * ListPattern — match each part of a tuple
 * ViaPattern — transform the specimen
 * EScriptoid (abstract) (proposed) — defines the behavior of an ObjectExpr
 * EMatcher — various uses
 * EScript — object behavior as a set of EMethod
 * EMethod
 * AuditorExprs (proposed) — see ObjectExpr

Formerly kernel nodes
These node types were once part of Kernel-E but have been removed or made non-kernel.


 * SlotExpr, SlotPattern — now nonkernel in terms of BindingExpr and BindingPattern
 * MatchBindExpr — now nonkernel in terms of DefineExpr
 * SuchThatPattern — now nonkernel in terms of ViaPattern

Objects implied by Kernel-E semantics
Kernel-E semantics involves the following specific object types:


 * A method matcher's pattern is matched against a $Tuple$.
 * IfExpr coerces to Boolean.
 * ListPattern coerces to ConstList.