public override ApplyResult Apply(object[] args) { var list = args .OfType <T>() .ToList(); var seed = _seedFunc(list[0], list.Count); return(ApplyResult.From(list.Skip(1).Aggregate(seed, _aggrFunc))); }
public override ApplyResult Apply(object[] args) { if (args.Length < _parameters.Length) { var msg = String.Format("Expected {0} arguments, actual: {1}", _parameters.Length, args.Length); return(new ApplyResult(msg)); } Debug.Assert(args.Length >= _parameters.Length); var newEnv = _scmEnvironment.Extend(); for (int i = 0; i < _parameters.Length; i++) { newEnv.Add(_parameters[i], args[i]); } var se = _scmExpression.Eval(newEnv).Value as SelfEvaluatingExpression; return(ApplyResult.From(se.Value)); }
public override ApplyResult Apply(object[] args) { return(ApplyResult.From(_func((TArg)args[0], (TArg)args[1]))); }