public override object MacroExpand(Executive engine, object[] lval, ref bool proceed) { object[] args = new object[lval.Length]; for (int k = 0; k < args.Length; k++) { args[k] = Lisp.List(engine.MacroExpand(Lisp.First(lval[k]), ref proceed), engine.MacroExpand(Lisp.Second(lval[k]), ref proceed)); } return Lisp.Functor(ID, args); }
public override object MacroExpand(Executive engine, object[] lval, ref bool proceed) { object[] arg = Lisp.ToArray(lval[0]); for (int k = 0; k < arg.Length; k++) { object[] pair = Lisp.ToArray(arg[k]); pair[1] = engine.MacroExpand(pair[1], ref proceed); arg[k] = Lisp.List(pair); } return Lisp.List(ID, Lisp.List(arg), engine.MacroExpand(lval[1], ref proceed)); }
public virtual object MacroExpand(Executive engine, object[] lval, ref bool proceed) { return engine.MacroExpand(ID, lval, ref proceed); }