public A SumLeft(Semigroup <A> m) => tail.FoldLeft <A>(m.Op, head);
Beispiel #2
0
        public Reducer <Q, B> XSelect <B>(Func <A, B> f, Func <B, A> g)
        {
            var t = this;

            return(Semigroup.XSelect(f, g).Reducer <Q>(q => f(t.unit(q))));
        }
 public A SumRight(Semigroup <A> m) => tail.FoldRight <A>(m.Op, head);
Beispiel #4
0
 public A SumLeft(Semigroup <A> m)
 {
     return(tail.FoldLeft <A>(m.Op, head));
 }
Beispiel #5
0
        public Reducer <Q, Pair <A, B> > Pair <B>(Reducer <Q, B> s)
        {
            var t = this;

            return(Semigroup.Pair(s.Semigroup).Reducer <Q>(q => t.unit(q).And(s.unit(q))));
        }
Beispiel #6
0
 public Input <E> Append(Input <E> o, Semigroup <E> m)
 {
     return(m.Input.Op(this, o));
 }
Beispiel #7
0
 public PairAndSemigroup <A, B> Constrain(Semigroup <A> s)
 {
     return(new PairAndSemigroup <A, B>(this, s));
 }
Beispiel #8
0
 public A Apply(A a1, A a2)
 {
     return(Semigroup.Apply(a1, a2));
 }
Beispiel #9
0
 public Func <A, A> Curried1(A a1)
 {
     return(Semigroup.Curried1(a1));
 }
Beispiel #10
0
 public Monoid <B> XSelect <B>(Func <A, B> f, Func <B, A> g)
 {
     return(Semigroup.XSelect(f, g).Monoid(f(id)));
 }
Beispiel #11
0
 public PairAndSemigroup <A, B> Constrain(Semigroup <A> s) => new PairAndSemigroup <A, B>(this, s);
Beispiel #12
0
        public Monoid <Func <B, C, D, A> > Pointwise3 <B, C, D>()
        {
            var t = this;

            return(Semigroup.Pointwise3 <B, C, D>().Monoid((_, __, ___) => t.id));
        }
Beispiel #13
0
        public Monoid <Func <B, A> > Pointwise <B>()
        {
            var t = this;

            return(Semigroup.Pointwise <B>().Monoid(_ => t.id));
        }
Beispiel #14
0
 public Monoid <Pair <A, B> > Pair <B>(Monoid <B> s)
 {
     return(Semigroup.Pair(s.Semigroup).Monoid(id.And(s.Id)));
 }
Beispiel #15
0
 public B SumMapRight <B>(Func <A, B> f, Semigroup <B> m) =>
 tail.FoldRight <B>((a, b) => m.Op(f(a), b), f(head));
Beispiel #16
0
 public Input <E> Append(Input <E> o, Semigroup <E> m) => m.Input.Op(this, o);
Beispiel #17
0
 public B SumMapLeft <B>(Func <A, B> f, Semigroup <B> m) =>
 tail.FoldLeft <B>((a, b) => m.Op(a, f(b)), f(head));
Beispiel #18
0
 public A Apply(A a1, A a2) => Semigroup.Apply(a1, a2);
Beispiel #19
0
 internal PairAndSemigroup(Pair <A, B> pair, Semigroup <A> s)
 {
     this.pair = pair;
     this.s    = s;
 }
Beispiel #20
0
 public Func <A, A> Curried1(A a1) => Semigroup.Curried1(a1);
Beispiel #21
0
        public Semigroup <Pair <A, B> > Pair <B>(Semigroup <B> s)
        {
            var t = this;

            return(new Semigroup <Pair <A, B> >((p1, p2) => t.op(p1._1.Get, p2._1.Get).And(s.op(p1._2.Get, p2._2.Get))));
        }
Beispiel #22
0
 public A SumRight(Semigroup <A> m)
 {
     return(tail.FoldRight <A>(m.Op, head));
 }