Пример #1
0
        public Lambda(Expression expr, Environment environment)
            : base("anonymous", environment.CurrentScope)
        {
            _environment = environment;
            _formalParameters = new FormalParameters(expr.Elements.Second());

            Precondition = args => args.Count() == _formalParameters.Count;
            Implementation = args => expr.Elements.Skip(2).Evaluate(_environment.CurrentScope);
        }
Пример #2
0
 public Macro(
     string symbol,
     ListExpression formalParams,
     IEnumerable<Expression> body,
     Environment environment)
     : base(new Token(Tokens.MACRO, symbol))
 {
     _formalParams = new FormalParameters(formalParams);
     _body = body;
     _environment = environment;
     _scope = _environment.CurrentScope;
 }