Exemple #1
0
        public LstInternal <A> Subtract(LstInternal <A> rhs)
        {
            var self = this;

            foreach (var item in rhs)
            {
                self = self.Remove(item);
            }
            return(self);
        }
 /// <summary>
 /// Ctor
 /// </summary>
 Lst(LstInternal <A> root)
 {
     value = root;
     if (root == null)
     {
         throw new NullReferenceException(nameof(root));
     }
     if (!default(PRED).True(this))
     {
         throw new ArgumentOutOfRangeException(nameof(value));
     }
 }
 /// <summary>
 /// Ctor
 /// </summary>
 Lst(ListItem <A> root, bool rev)
 {
     if (root == null)
     {
         throw new NullReferenceException(nameof(root));
     }
     value = new LstInternal <A>(root, rev);
     if (!default(PRED).True(this))
     {
         throw new ArgumentOutOfRangeException(nameof(value));
     }
 }
 /// <summary>
 /// Ctor
 /// </summary>
 public Lst(IEnumerable <A> initial)
 {
     if (initial == null)
     {
         throw new NullReferenceException(nameof(initial));
     }
     value = new LstInternal <A>(initial, default(True <A>));
     if (!default(PRED).True(this))
     {
         throw new ArgumentOutOfRangeException(nameof(value));
     }
 }
Exemple #5
0
        public bool Equals(LstInternal <A> other)
        {
            if (ReferenceEquals(this, other))
            {
                return(true);
            }
            if (ReferenceEquals(other, null))
            {
                return(false);
            }
            var comparer = EqualityComparer <A> .Default;

            return(Count == other.Count && this.Zip(other, (x, y) => comparer.Equals(x, y)).ForAll(x => x));
        }
Exemple #6
0
        public int CompareTo <OrdA>(LstInternal <A> other) where OrdA : struct, Ord <A>
        {
            var cmp = Count.CompareTo(other.Count);

            if (cmp != 0)
            {
                return(cmp);
            }
            var iterA = GetEnumerator();
            var iterB = other.GetEnumerator();

            while (iterA.MoveNext() && iterB.MoveNext())
            {
                cmp = default(OrdA).Compare(iterA.Current, iterB.Current);
                if (cmp != 0)
                {
                    return(cmp);
                }
            }
            return(0);
        }
 static Lst <PRED, T> Wrap <T>(LstInternal <T> list) =>
 new Lst <PRED, T>(list);
 Lst <PRED, A> Wrap(LstInternal <A> list) =>
 new Lst <PRED, A>(list);
Exemple #9
0
 public LstInternal <A> Append(LstInternal <A> rhs) =>
 AddRange(rhs);
Exemple #10
0
 static Lst <PredList, PREDITEM, T> Wrap <PREDITEM, T>(LstInternal <T> list)
     where PREDITEM : struct, Pred <T> =>
 new Lst <PredList, PREDITEM, T>(list);
Exemple #11
0
 Lst <PredList, PredItem, A> Wrap(LstInternal <A> list) =>
 new Lst <PredList, PredItem, A>(list);
Exemple #12
0
 /// <summary>
 /// Ctor
 /// </summary>
 internal Lst(ListItem <A> root, bool rev)
 {
     value = new LstInternal <A>(root, rev);
 }
Exemple #13
0
 /// <summary>
 /// Ctor
 /// </summary>
 public Lst(IEnumerable <A> initial)
 {
     value = new LstInternal <A>(initial, default(True <A>));
 }