Example #1
0
 public Func(Value ast,
             Environment env,
             Types.Expression fparams,
             Func <Types.Expression, Value> fn)
 {
     this.fn      = fn;
     this.ast     = ast;
     this.env     = env;
     this.fparams = fparams;
 }
Example #2
0
 public Environment(Environment outer, Types.Expression binds, Types.Expression exprs)
 {
     _outer = outer;
     for (var i = 0; i < binds.Size(); i++)
     {
         var sym = ((Types.Symbol)binds.Nth(i)).GetName();
         if (sym == "ampersand")
         {
             _data[((Types.Symbol)binds.Nth(i + 1)).GetName()] = exprs.Slice(i);
             break;
         }
         else
         {
             _data[sym] = exprs.Nth(i);
         }
     }
 }
Example #3
0
 public Environment GetEnv(Types.Expression args) => new Environment(env, fparams, args);
Example #4
0
 public Value Apply(Types.Expression args) => fn(args);