Expand description
Implements all the semantics of WLambda. It takes an AST that was generated by the parser and compiles it to a tree of closures.
The compiler and the runtime require multiple
other data structures, such as GlobalEnv
with a
SymbolTable
for global functions,
a ModuleResolver
and a ThreadCreator
.
An to execute the closures that the compiler generated
you need an Env
instance (which itself requires a reference
to the GlobalEnv
.
To orchestrate all this the EvalContext
exists.
You can customize:
- The
GlobalEnv
with custom globals and even with your own core and standard library functions - You can provide a custom
ModuleResolver
, which loads the modules from other sources (eg. memory or network). - You can make your own
ThreadCreator
, to customize thread creation.
However, to get some WLambda code running quickly there is
EvalContext::new_default()
which creates a ready made context for
evaluating WLambda code:
use wlambda::*;
let mut ctx = EvalContext::new_default();
let res = ctx.eval("$[10, 20 + 30]").unwrap();
assert_eq!(res.s(), "$[10,50]");
Structs
This context holds all the data to compile and execute a piece of WLambda code. You can either use the default environment, or customize the EvalContext to your application’s needs. You can provide custom:
Holds global environment variables.
This structure implements the ModuleResolver trait and is
responsible for loading modules on !@import
for WLambda.
Stores symbols and values for a WLambda module that can be added to a GlobalEnv
with set_module
.
Enums
Errors that can occur when evaluating a piece of WLambda code.
Usually created by methods of EvalContext
.
Error for the ModuleResolver
trait, to implement
custom module loading behaviour.
Traits
This trait is responsible for loading modules and returning a collection of name->value mappings for a module name.
Functions
This is a function to help evaluating a piece of WLambda code and receive a text representation of the result. It’s primarily used by the WLambda test suite.
Type Definitions
Reference type of GlobalEnv
.