Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Comb<A, B> implements F<A, Comb<A, B>> {
- private final B b;
- private final Semigroup<B> m;
- private final F<A, B> f;
- private Comb(final Semigroup<B> m, final F<A, B> f, final B b) {
- this.f = f;
- this.m = m;
- this.b = b;
- }
- public static <A, B> Comb<A, B> comb(final F<A, B> f, final Monoid<B> m) {
- return new Comb<A, B>(m.semigroup(), f, m.zero());
- }
- public static <A, B> Comb<A, B> comb(final F<A, B> f, final Semigroup<B> m, final B b) {
- return new Comb<A, B>(m, f, b);
- }
- public Comb<A, B> f(final A a) {
- return comb(f, m, m.sum(b, f.f(a)));
- }
- }
Add Comment
Please, Sign In to add comment