/// <summary> /// Constructor accepting an outer <see cref="Env"/> with binds and expressions. /// </summary> /// <param name="outer"><see cref="Env"/></param> /// <param name="binds"><see cref="OpenLispList"/></param> /// <param name="expressions"><see cref="OpenLispList"/></param> public Env(Env outer, OpenLispList binds, OpenLispList expressions) { _outer = outer; for (int i = 0; i < binds.Size; i++) { string symbol = ((OpenLispSymbol)binds.Nth(i)).Value; if (symbol == "&") { _data[((OpenLispSymbol)binds.Nth(i + 1)).Value] = expressions.Slice(i); break; } _data[symbol] = expressions.Nth(i); } }