public override IValue Eval(IValue[] parameters) { var mode = this.Validate(parameters); switch (mode) { case Mode.Set: var res = new ListArray() as IArray; foreach (var parameter in parameters) { res = res.Combine(parameter.AsSet); } return(new ArrayValue(res)); case Mode.String: var sb = new StringBuilder(); foreach (var parameter in parameters) { sb.Append(parameter.AsString); } return(new StringValue(sb.ToString())); default: throw new System.NotSupportedException(); } }