"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.const_ = exports.Bifunctor = exports.Contravariant = exports.flap = exports.Functor = exports.URI = exports.mapLeft = exports.bimap = exports.map = exports.contramap = exports.getApplicative = exports.getApply = exports.getBooleanAlgebra = exports.getHeytingAlgebra = exports.getRing = exports.getSemiring = exports.getMonoid = exports.getSemigroup = exports.getBounded = exports.getOrd = exports.getEq = exports.getShow = exports.make = void 0; var function_1 = require("./function"); var Functor_1 = require("./Functor"); /** * @category constructors * @since 2.0.0 */ exports.make = function_1.unsafeCoerce; /** * @category instances * @since 2.0.0 */ function getShow(S) { return { show: function (c) { return "make(".concat(S.show(c), ")"); } }; } exports.getShow = getShow; /** * @category instances * @since 2.0.0 */ exports.getEq = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getOrd = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getBounded = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getSemigroup = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getMonoid = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getSemiring = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getRing = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getHeytingAlgebra = function_1.identity; /** * @category instances * @since 2.6.0 */ exports.getBooleanAlgebra = function_1.identity; /** * @category instances * @since 2.0.0 */ function getApply(S) { return { URI: exports.URI, _E: undefined, map: _map, ap: function (fab, fa) { return (0, exports.make)(S.concat(fab, fa)); } }; } exports.getApply = getApply; /** * @category instances * @since 2.0.0 */ function getApplicative(M) { var A = getApply(M); return { URI: exports.URI, _E: undefined, map: A.map, ap: A.ap, of: function () { return (0, exports.make)(M.empty); } }; } exports.getApplicative = getApplicative; var _contramap = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.contramap)(f)); }; /* istanbul ignore next */ var _map = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.map)(f)); }; /* istanbul ignore next */ var _bimap = function (fa, f, g) { return (0, function_1.pipe)(fa, (0, exports.bimap)(f, g)); }; /* istanbul ignore next */ var _mapLeft = function (fa, f) { return (0, function_1.pipe)(fa, (0, exports.mapLeft)(f)); }; /** * @since 2.0.0 */ var contramap = function () { return function_1.unsafeCoerce; }; exports.contramap = contramap; /** * `map` can be used to turn functions `(a: A) => B` into functions `(fa: F) => F` whose argument and return types * use the type constructor `F` to represent some computational context. * * @category mapping * @since 2.0.0 */ var map = function () { return function_1.unsafeCoerce; }; exports.map = map; /** * Map a pair of functions over the two type arguments of the bifunctor. * * @category mapping * @since 2.6.2 */ var bimap = function (f) { return function (fa) { return (0, exports.make)(f(fa)); }; }; exports.bimap = bimap; /** * Map a function over the first type argument of a bifunctor. * * @category error handling * @since 2.6.2 */ var mapLeft = function (f) { return function (fa) { return (0, exports.make)(f(fa)); }; }; exports.mapLeft = mapLeft; /** * @category type lambdas * @since 2.0.0 */ exports.URI = 'Const'; /** * @category instances * @since 2.7.0 */ exports.Functor = { URI: exports.URI, map: _map }; /** * @category mapping * @since 2.10.0 */ exports.flap = (0, Functor_1.flap)(exports.Functor); /** * @category instances * @since 2.7.0 */ exports.Contravariant = { URI: exports.URI, contramap: _contramap }; /** * @category instances * @since 2.7.0 */ exports.Bifunctor = { URI: exports.URI, bimap: _bimap, mapLeft: _mapLeft }; // ------------------------------------------------------------------------------------- // deprecated // ------------------------------------------------------------------------------------- /** * This instance is deprecated, use small, specific instances instead. * For example if a function needs a `Functor` instance, pass `C.Functor` instead of `C.const_` * (where `C` is from `import C from 'fp-ts/Const'`) * * @category zone of death * @since 2.0.0 * @deprecated */ exports.const_ = { URI: exports.URI, map: _map, contramap: _contramap, bimap: _bimap, mapLeft: _mapLeft };