EvalStep
The set of states used in defining a BuiltIn function.
EvalBodyStep is for evaling a list of Terms, throwing away the results from all but the last Term. State is modified along the way, as is the namespace.
The set of states during eval of a schelme function.
EvalTermStep represents the possible states during eval of a single Term. As with all the 'Steps', the state is modified during eval, as is the namespace, although these changes may be thrown away by higher levels of eval.
EvalTermsStep is a set of states used to eval a list of Terms, returning the list of resulting Terms. Mainly for processing function arguments.
a schelme function is a list of arg names and a list of Terms, which are evaled sequentially when the function is called.
The ListStep is the set of states for evaling a list Term. Evaling a list usually results in function calls - fuctions defined in schelme, functions that modify namespace but not state (builtin) and functions that modify namespace and state (sideeffectors).
schelme code is always executed with a namespace, which maps from symbol names to Terms.
A sideeffector function processes SideEffectorSteps, and should eventually return either a SideEffectorFinal or SideEffectorError. Unlike the BuiltIn, the SideEffector returns a modified state ('a') in its Final step.
The steps involved in a SideEffector function. Not all these steps have to be used. Check out the prelude for some examples.
A Schelme program is a list of Terms.
parse a series of s-expressions, yielding a list of terms.
A builtin function is defined in Elm. It should process any of the BuiltInStep states, hopefully resulting in a BuiltInFinal at the end. BuiltInFinal doesn't include the state ('a'), so any changes mades to state are always thrown away.