Exemplo n.º 1
0
        /// <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);
            }
        }