Ejemplo n.º 1
0
 public A SumLeft(Semigroup <A> m) => tail.FoldLeft <A>(m.Op, head);
Ejemplo n.º 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))));
        }
Ejemplo n.º 3
0
 public A SumRight(Semigroup <A> m) => tail.FoldRight <A>(m.Op, head);
Ejemplo n.º 4
0
 public A SumLeft(Semigroup <A> m)
 {
     return(tail.FoldLeft <A>(m.Op, head));
 }
Ejemplo n.º 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))));
        }
Ejemplo n.º 6
0
 public Input <E> Append(Input <E> o, Semigroup <E> m)
 {
     return(m.Input.Op(this, o));
 }
Ejemplo n.º 7
0
 public PairAndSemigroup <A, B> Constrain(Semigroup <A> s)
 {
     return(new PairAndSemigroup <A, B>(this, s));
 }
Ejemplo n.º 8
0
 public A Apply(A a1, A a2)
 {
     return(Semigroup.Apply(a1, a2));
 }
Ejemplo n.º 9
0
 public Func <A, A> Curried1(A a1)
 {
     return(Semigroup.Curried1(a1));
 }
Ejemplo n.º 10
0
 public Monoid <B> XSelect <B>(Func <A, B> f, Func <B, A> g)
 {
     return(Semigroup.XSelect(f, g).Monoid(f(id)));
 }
Ejemplo n.º 11
0
 public PairAndSemigroup <A, B> Constrain(Semigroup <A> s) => new PairAndSemigroup <A, B>(this, s);
Ejemplo n.º 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));
        }
Ejemplo n.º 13
0
        public Monoid <Func <B, A> > Pointwise <B>()
        {
            var t = this;

            return(Semigroup.Pointwise <B>().Monoid(_ => t.id));
        }
Ejemplo n.º 14
0
 public Monoid <Pair <A, B> > Pair <B>(Monoid <B> s)
 {
     return(Semigroup.Pair(s.Semigroup).Monoid(id.And(s.Id)));
 }
Ejemplo n.º 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));
Ejemplo n.º 16
0
 public Input <E> Append(Input <E> o, Semigroup <E> m) => m.Input.Op(this, o);
Ejemplo n.º 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));
Ejemplo n.º 18
0
 public A Apply(A a1, A a2) => Semigroup.Apply(a1, a2);
Ejemplo n.º 19
0
 internal PairAndSemigroup(Pair <A, B> pair, Semigroup <A> s)
 {
     this.pair = pair;
     this.s    = s;
 }
Ejemplo n.º 20
0
 public Func <A, A> Curried1(A a1) => Semigroup.Curried1(a1);
Ejemplo n.º 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))));
        }
Ejemplo n.º 22
0
 public A SumRight(Semigroup <A> m)
 {
     return(tail.FoldRight <A>(m.Op, head));
 }