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

var _chunkS2Z5L3RBjs = require('./chunk-S2Z5L3RB.js');




var _chunk7K74W2G3js = require('./chunk-7K74W2G3.js');




var _chunkQ2LZCTWPjs = require('./chunk-Q2LZCTWP.js');



var _chunkEBISTSVAjs = require('./chunk-EBISTSVA.js');


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




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


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

// src/Identity.ts
var Identity_exports = {};
_chunk6C3VEZWHjs.__export.call(void 0, Identity_exports, {
  Alt: () => Alt,
  Applicative: () => Applicative,
  Apply: () => Apply,
  Chain: () => Chain,
  ChainRec: () => ChainRec,
  Comonad: () => Comonad,
  Do: () => Do,
  Foldable: () => Foldable,
  Functor: () => Functor,
  Monad: () => Monad,
  Pointed: () => Pointed,
  Traversable: () => Traversable,
  URI: () => URI,
  alt: () => alt,
  altW: () => altW,
  ap: () => ap,
  apFirst: () => apFirst2,
  apS: () => apS2,
  apSecond: () => apSecond2,
  bind: () => bind2,
  bindTo: () => bindTo2,
  chain: () => chain,
  chainFirst: () => chainFirst2,
  chainRec: () => chainRec,
  duplicate: () => duplicate,
  extend: () => extend,
  extract: () => extract,
  flap: () => flap2,
  flatMap: () => flatMap,
  flatten: () => flatten,
  foldMap: () => foldMap,
  getEq: () => getEq,
  getShow: () => getShow,
  identity: () => identity2,
  let: () => let_2,
  map: () => map,
  of: () => of,
  reduce: () => reduce,
  reduceRight: () => reduceRight,
  sequence: () => sequence,
  traverse: () => traverse
});
var _map = (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, map(f));
var _ap = (fab, fa) => _chunkSQA7G4TEjs.pipe.call(void 0, fab, ap(fa));
var _reduce = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduce(b, f));
var _foldMap = (M) => (fa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, foldMap(M)(f));
var _reduceRight = (fa, b, f) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, reduceRight(b, f));
var _alt = (fa, that) => _chunkSQA7G4TEjs.pipe.call(void 0, fa, alt(that));
var _extend = (wa, f) => _chunkSQA7G4TEjs.pipe.call(void 0, wa, extend(f));
var _traverse = (F) => {
  const traverseF = traverse(F);
  return (ta, f) => _chunkSQA7G4TEjs.pipe.call(void 0, ta, traverseF(f));
};
var map = (f) => (fa) => f(fa);
var ap = (fa) => (fab) => fab(fa);
var of = _chunkSQA7G4TEjs.identity;
var flatMap = /* @__PURE__ */ _chunkSQA7G4TEjs.dual.call(void 0, 2, (ma, f) => f(ma));
var extend = (f) => (wa) => f(wa);
var extract = _chunkSQA7G4TEjs.identity;
var duplicate = /* @__PURE__ */ extend(_chunkSQA7G4TEjs.identity);
var flatten = /* @__PURE__ */ flatMap(_chunkSQA7G4TEjs.identity);
var reduce = (b, f) => (fa) => f(b, fa);
var foldMap = () => (f) => (fa) => f(fa);
var reduceRight = (b, f) => (fa) => f(fa, b);
var traverse = (F) => (f) => (ta) => F.map(f(ta), _chunkSQA7G4TEjs.identity);
var sequence = (F) => (ta) => {
  return F.map(ta, _chunkSQA7G4TEjs.identity);
};
var altW = () => _chunkSQA7G4TEjs.identity;
var alt = altW;
var URI = "Identity";
var getShow = _chunkSQA7G4TEjs.identity;
var getEq = _chunkSQA7G4TEjs.identity;
var Functor = {
  URI,
  map: _map
};
var flap2 = /* @__PURE__ */ _chunk7K74W2G3js.flap.call(void 0, Functor);
var Pointed = {
  URI,
  of
};
var Apply = {
  URI,
  map: _map,
  ap: _ap
};
var apFirst2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apFirst.call(void 0, Apply);
var apSecond2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apSecond.call(void 0, Apply);
var Applicative = {
  URI,
  map: _map,
  ap: _ap,
  of
};
var Chain = {
  URI,
  map: _map,
  ap: _ap,
  chain: flatMap
};
var Monad = {
  URI,
  map: _map,
  ap: _ap,
  of,
  chain: flatMap
};
var chainFirst2 = /* @__PURE__ */ _chunkEBISTSVAjs.chainFirst.call(void 0, Chain);
var Foldable = {
  URI,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight
};
var Traversable = {
  URI,
  map: _map,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight,
  traverse: _traverse,
  sequence
};
var Alt = {
  URI,
  map: _map,
  alt: _alt
};
var Comonad = {
  URI,
  map: _map,
  extend: _extend,
  extract
};
var chainRec = _chunkS2Z5L3RBjs.tailRec;
var ChainRec = {
  URI,
  map: _map,
  ap: _ap,
  chain: flatMap,
  chainRec
};
var Do = /* @__PURE__ */ of(_chunkOTKMOSH2js.emptyRecord);
var bindTo2 = /* @__PURE__ */ _chunk7K74W2G3js.bindTo.call(void 0, Functor);
var let_2 = /* @__PURE__ */ _chunk7K74W2G3js.let_.call(void 0, Functor);
var bind2 = /* @__PURE__ */ _chunkEBISTSVAjs.bind.call(void 0, Chain);
var apS2 = /* @__PURE__ */ _chunkQ2LZCTWPjs.apS.call(void 0, Apply);
var chain = flatMap;
var identity2 = {
  URI,
  map: _map,
  ap: _ap,
  of,
  chain: flatMap,
  reduce: _reduce,
  foldMap: _foldMap,
  reduceRight: _reduceRight,
  traverse: _traverse,
  sequence,
  alt: _alt,
  extract,
  extend: _extend,
  chainRec
};












































exports.map = map; exports.ap = ap; exports.of = of; exports.flatMap = flatMap; exports.extend = extend; exports.extract = extract; exports.duplicate = duplicate; exports.flatten = flatten; exports.reduce = reduce; exports.foldMap = foldMap; exports.reduceRight = reduceRight; exports.traverse = traverse; exports.sequence = sequence; exports.altW = altW; exports.alt = alt; exports.URI = URI; exports.getShow = getShow; exports.getEq = getEq; exports.Functor = Functor; exports.flap = flap2; exports.Pointed = Pointed; exports.Apply = Apply; exports.apFirst = apFirst2; exports.apSecond = apSecond2; exports.Applicative = Applicative; exports.Chain = Chain; exports.Monad = Monad; exports.chainFirst = chainFirst2; exports.Foldable = Foldable; exports.Traversable = Traversable; exports.Alt = Alt; exports.Comonad = Comonad; exports.chainRec = chainRec; exports.ChainRec = ChainRec; exports.Do = Do; exports.bindTo = bindTo2; exports.let_ = let_2; exports.bind = bind2; exports.apS = apS2; exports.chain = chain; exports.identity = identity2; exports.Identity_exports = Identity_exports;
