@dillonkearns/elm-graphql
Version:
<img src="https://cdn.jsdelivr.net/gh/martimatix/logo-graphqelm/logo.svg" alt="dillonearns/elm-graphql logo" width="40%" align="right">
92 lines (81 loc) • 1.83 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.arrayMonoid = exports.stringMonoid = exports.product = exports.sum = exports.any = exports.all = undefined;
exports.concatAll = concatAll;
exports.getProductMonoid = getProductMonoid;
exports.getDualMonoid = getDualMonoid;
var _Semigroup = require('./Semigroup');
// Fold a list using the monoid
function concatAll(monoid, as) {
return as.reduce(monoid.concat, monoid.empty());
}
function getProductMonoid(amonoid, bmonoid) {
return {
empty: function empty() {
return [amonoid.empty(), bmonoid.empty()];
},
concat: (0, _Semigroup.getProductSemigroup)(amonoid, bmonoid).concat
};
}
function getDualMonoid(monoid) {
return {
empty: monoid.empty,
concat: function concat(x, y) {
return monoid.concat(y, x);
}
};
}
// Boolean monoid under conjunction
var all = exports.all = {
empty: function empty() {
return true;
},
concat: function concat(x, y) {
return x && y;
}
};
// Boolean monoid under disjunction
var any = exports.any = {
empty: function empty() {
return false;
},
concat: function concat(x, y) {
return x || y;
}
};
// Monoid under addition
var sum = exports.sum = {
empty: function empty() {
return 0;
},
concat: function concat(x, y) {
return x + y;
}
};
// Monoid under multiplication
var product = exports.product = {
empty: function empty() {
return 1;
},
concat: function concat(x, y) {
return x * y;
}
};
var stringMonoid = exports.stringMonoid = {
empty: function empty() {
return '';
},
concat: function concat(x, y) {
return x + y;
}
};
var arrayMonoid = exports.arrayMonoid = {
empty: function empty() {
return [];
},
concat: function concat(x, y) {
return x.concat(y);
}
};