IEnumerator IEnumerable.GetEnumerator() { var reducer = (IApply)Runtime.Funcall(Transform, new QueueReducer()); var queue = (Queue)Runtime.Funcall(reducer); foreach (var item in Runtime.ToIter(Seq)) { var result = UseApply ? Runtime.ApplyStar(reducer, queue, item) : Runtime.Funcall(reducer, queue, item); if (Runtime.Reducedp(result)) { break; } else { while (queue.Count > 0) { yield return(queue.Dequeue()); } } } Runtime.Funcall(reducer, queue); while (queue.Count > 0) { yield return(queue.Dequeue()); } }
public Cons AsList() { var reducer = (IApply)Runtime.Funcall(Transform, new ListReducer()); var result = Runtime.Funcall(reducer); foreach (var item in Runtime.ToIter(Seq)) { result = (UseApply ? Runtime.ApplyStar(reducer, result, item) : Runtime.Funcall(reducer, result, item)); if (Runtime.Reducedp(result)) { break; } } return(((Cons)Runtime.Unreduced(result)).Cdr); }
public Vector AsVector() { var reducer = (IApply)Runtime.Funcall(Transform, new VectorReducer()); var result = Runtime.Funcall(reducer); foreach (var item in Runtime.ToIter(Seq)) { result = (UseApply ? Runtime.ApplyStar(reducer, result, item) : Runtime.Funcall(reducer, result, item)); if (Runtime.Reducedp(result)) { break; } } return((Vector)Runtime.Unreduced(result)); }
object IApply.Apply(object[] args) { return(Runtime.ApplyStar(Proc, args[0])); }
public object Obj_Apply_Enumerable(IEnumerable item) { return(Runtime.ApplyStar(function, item)); }
public object ObjA_Obj(object[] items) { return(Runtime.ApplyStar(function, new object[] { items })); }