Exemple #1
0
 public Three(Measured <T, M> m, T v1, T v2, T v3)
     : base(m, m.Append(m.Measure(v1), m.Append(m.Measure(v2), m.Measure(v3))))
 {
     _v1 = v1;
     _v2 = v2;
     _v3 = v3;
 }
Exemple #2
0
 public Node3(Measured <T, M> m, Node3 <T, M> other)
     : base(m, m.Append(m.Measure(other.V1), m.Append(m.Measure(other.V2), m.Measure(other.V3))))
 {
     _v1 = other.V1;
     _v2 = other.V2;
     _v3 = other.V3;
 }
Exemple #3
0
 public Four(Measured <T, M> m, T v1, T v2, T v3, T v4)
     : base(m, m.Append(m.Measure(v1), m.Append(m.Measure(v2), m.Append(m.Measure(v3), m.Measure(v4)))))
 {
     _v1 = v1;
     _v4 = v4;
     _v2 = v2;
     _v3 = v3;
 }
Exemple #4
0
        public override FingerTree <T, M> AddRight(T a)
        {
            Measured <T, M> m = Measured;
            M measure         = m.Append(m.Measure(a), Size);

            return(_suffix.Match(x1 => new Deep <T, M>(m, measure, _prefix, _middle, _mk.Two(x1.V, a)),
                                 x2 => new Deep <T, M>(m, measure, _prefix, _middle, _mk.Three(x2.V1, x2.V2, a)),
                                 x3 => new Deep <T, M>(m, measure, _prefix, _middle, _mk.Four(x3.V1, x3.V2, x3.V3, a)),
                                 x4 => new Deep <T, M>(m, measure, _prefix, _middle.AddRight(_mk.Node3(x4.V1, x4.V2, x4.V3)),
                                                       _mk.Two(x4.V4, a))));
        }
Exemple #5
0
        public override FingerTree <T, M> AddLeft(T a)
        {
            Measured <T, M> m = Measured;
            M size            = m.Append(m.Measure(a), Size);

            return(_prefix.Match(x1 => new Deep <T, M>(m, size, _mk.Two(a, x1.V), _middle, _suffix),
                                 x2 => new Deep <T, M>(m, size, _mk.Three(a, x2.V1, x2.V2), _middle, _suffix),
                                 x3 => new Deep <T, M>(m, size, _mk.Four(a, x3.V1, x3.V2, x3.V3), _middle, _suffix),
                                 x4 => new Deep <T, M>(m, size, _mk.Two(a, x4.V1),
                                                       _middle.AddLeft(_mk.Node3(x4.V2, x4.V3, x4.V4)), _suffix)));
        }
Exemple #6
0
 public Node2(Measured <T, M> m, Node2 <T, M> other)
     : base(m, m.Append(m.Measure(other.V1), m.Measure(other.V2)))
 {
     _v1 = other.V1;
     _v2 = other.V2;
 }
Exemple #7
0
 public Node2(Measured <T, M> m, T v1, T v2)
     : base(m, m.Append(m.Measure(v1), m.Measure(v2)))
 {
     _v1 = v1;
     _v2 = v2;
 }
Exemple #8
0
 public M Measure()
 {
     return(FoldLeft(x => t => _m.Append(x, _m.Measure(t)), _m.Identity));
 }
Exemple #9
0
 public Single(Measured <T, M> m, T item)
     : base(m, m.Measure(item))
 {
     _item = item;
     _mk   = new MakeTree <T, M>(m);
 }
Exemple #10
0
 public One(Measured <T, M> m, T v)
     : base(m, m.Measure(v))
 {
     _v = v;
 }