Beispiel #1
0
        public override Seq <A> Skip(int count)
        {
            if (count == 0)
            {
                return(this);
            }
            if (count == 1)
            {
                return(Tail);
            }

            Seq <A> current = this;

            while (!current.IsEmpty)
            {
                if (current.IsTerminator && !ReferenceEquals(current, this))
                {
                    return(current.Skip(count));
                }
                current = current.Tail;
                count--;
                if (count == 0)
                {
                    return(current);
                }
            }
            return(Empty);
        }
Beispiel #2
0
        public ISeqInternal <A> Cons(A value)
        {
            var head = ms.Head.Cons(value);

            return(new SeqConcat <A>(head.Cons(ms.Skip(1))));
        }
 public static Seq <T> append <T>(Seq <T> x, Seq <Seq <T> > xs) =>
 headOrNone(xs).IsNone
         ? x
         : append(x, append(xs.Head, xs.Skip(1)));