Exemple #1
0
        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());
            }
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }
Exemple #4
0
 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 }));
 }