"use strict";Object.defineProperty(exports, "__esModule", {value: true});

var _chunk6AMJDYNYjs = require('./chunk-6AMJDYNY.js');













var _chunkF6EGFU3Wjs = require('./chunk-F6EGFU3W.js');


var _chunkOTKMOSH2js = require('./chunk-OTKMOSH2.js');


var _chunkSQA7G4TEjs = require('./chunk-SQA7G4TE.js');


var _chunk6C3VEZWHjs = require('./chunk-6C3VEZWH.js');

// src/Monoid.ts
var Monoid_exports = {};
_chunk6C3VEZWHjs.__export.call(void 0, Monoid_exports, {
  concatAll: () => concatAll2,
  fold: () => fold,
  getDualMonoid: () => getDualMonoid,
  getEndomorphismMonoid: () => getEndomorphismMonoid,
  getFunctionMonoid: () => getFunctionMonoid,
  getJoinMonoid: () => getJoinMonoid,
  getMeetMonoid: () => getMeetMonoid,
  getStructMonoid: () => getStructMonoid,
  getTupleMonoid: () => getTupleMonoid,
  max: () => max2,
  min: () => min2,
  monoidAll: () => monoidAll,
  monoidAny: () => monoidAny,
  monoidProduct: () => monoidProduct,
  monoidString: () => monoidString,
  monoidSum: () => monoidSum,
  monoidVoid: () => monoidVoid,
  reverse: () => reverse2,
  struct: () => struct2,
  tuple: () => tuple2
});
var min2 = (B) => ({
  concat: _chunkF6EGFU3Wjs.min.call(void 0, B).concat,
  empty: B.top
});
var max2 = (B) => ({
  concat: _chunkF6EGFU3Wjs.max.call(void 0, B).concat,
  empty: B.bottom
});
var reverse2 = (M) => ({
  concat: _chunkF6EGFU3Wjs.reverse.call(void 0, M).concat,
  empty: M.empty
});
var struct2 = (monoids) => {
  const empty = {};
  for (const k in monoids) {
    if (_chunkOTKMOSH2js.has.call(monoids, k)) {
      empty[k] = monoids[k].empty;
    }
  }
  return {
    concat: _chunkF6EGFU3Wjs.struct.call(void 0, monoids).concat,
    empty
  };
};
var tuple2 = (...monoids) => ({
  concat: _chunkF6EGFU3Wjs.tuple.call(void 0, ...monoids).concat,
  empty: monoids.map((m) => m.empty)
});
var concatAll2 = (M) => _chunkF6EGFU3Wjs.concatAll.call(void 0, M)(M.empty);
var monoidVoid = {
  concat: _chunkF6EGFU3Wjs.semigroupVoid.concat,
  empty: void 0
};
var getTupleMonoid = tuple2;
var getStructMonoid = struct2;
var getDualMonoid = reverse2;
var getJoinMonoid = max2;
var getMeetMonoid = min2;
var fold = concatAll2;
var monoidAll = {
  concat: _chunkF6EGFU3Wjs.semigroupAll.concat,
  empty: true
};
var monoidAny = {
  concat: _chunkF6EGFU3Wjs.semigroupAny.concat,
  empty: false
};
var getFunctionMonoid = _chunkSQA7G4TEjs.getMonoid;
var getEndomorphismMonoid = () => reverse2(_chunk6AMJDYNYjs.getMonoid.call(void 0, ));
var monoidString = {
  concat: _chunkF6EGFU3Wjs.semigroupString.concat,
  empty: ""
};
var monoidSum = {
  concat: _chunkF6EGFU3Wjs.semigroupSum.concat,
  empty: 0
};
var monoidProduct = {
  concat: _chunkF6EGFU3Wjs.semigroupProduct.concat,
  empty: 1
};























exports.min = min2; exports.max = max2; exports.reverse = reverse2; exports.struct = struct2; exports.tuple = tuple2; exports.concatAll = concatAll2; exports.monoidVoid = monoidVoid; exports.getTupleMonoid = getTupleMonoid; exports.getStructMonoid = getStructMonoid; exports.getDualMonoid = getDualMonoid; exports.getJoinMonoid = getJoinMonoid; exports.getMeetMonoid = getMeetMonoid; exports.fold = fold; exports.monoidAll = monoidAll; exports.monoidAny = monoidAny; exports.getFunctionMonoid = getFunctionMonoid; exports.getEndomorphismMonoid = getEndomorphismMonoid; exports.monoidString = monoidString; exports.monoidSum = monoidSum; exports.monoidProduct = monoidProduct; exports.Monoid_exports = Monoid_exports;
