@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">
102 lines (85 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.inj = inj;
exports.prj = prj;
exports.runIO = runIO;
exports.map = map;
exports.ap = ap;
exports.of = of;
exports.chain = chain;
exports.concat = concat;
exports.getSemigroup = getSemigroup;
exports.getMonoid = getMonoid;
exports.fromEff = fromEff;
exports.toEff = toEff;
var _HKT = require('./HKT');
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
var IsIO = function IsIO() {
_classCallCheck(this, IsIO);
};
function inj(a) {
return a;
}
function prj(fa) {
return fa;
}
function runIO(eff) {
return prj(eff)();
}
function map(f, fa) {
return inj(function () {
return f(runIO(fa));
});
}
function ap(fab, fa) {
return inj(function () {
return runIO(fab)(runIO(fa));
});
}
function of(a) {
return inj(function () {
return a;
});
}
function chain(f, fa) {
return inj(function () {
return runIO(f(runIO(fa)));
});
}
function concat(semigroup) {
return function concat(fx, fy) {
return inj(function () {
return semigroup.concat(runIO(fx), runIO(fy));
});
};
}
function getSemigroup(semigroup) {
return {
concat: concat(semigroup)
};
}
function getMonoid(monoid) {
return {
empty: function empty() {
return of(monoid.empty());
},
concat: concat(monoid)
};
}
function fromEff(fa) {
return fa;
}
function toEff(fa) {
return fa;
}
if (false) {
// eslint-disable-line
({
map: map,
ap: ap,
of: of,
chain: chain
});
}