// Generated by purs version 0.14.5
"use strict";
var Data_Eq = require("../Data.Eq/index.js");
var Data_Functor_Invariant = require("../Data.Functor.Invariant/index.js");
var Data_Ord = require("../Data.Ord/index.js");
var Data_Show = require("../Data.Show/index.js");
var Identity = function (x) {
    return x;
};
var showIdentity = function (dictShow) {
    return {
        show: function (v) {
            return "(Identity " + (Data_Show.show(dictShow)(v) + ")");
        }
    };
};
var semiringIdentity = function (dictSemiring) {
    return dictSemiring;
};
var semigroupIdenity = function (dictSemigroup) {
    return dictSemigroup;
};
var ringIdentity = function (dictRing) {
    return dictRing;
};
var ordIdentity = function (dictOrd) {
    return dictOrd;
};
var newtypeIdentity = {
    Coercible0: function () {
        return undefined;
    }
};
var monoidIdentity = function (dictMonoid) {
    return dictMonoid;
};
var lazyIdentity = function (dictLazy) {
    return dictLazy;
};
var heytingAlgebraIdentity = function (dictHeytingAlgebra) {
    return dictHeytingAlgebra;
};
var functorIdentity = {
    map: function (f) {
        return function (m) {
            return f(m);
        };
    }
};
var invariantIdentity = {
    imap: Data_Functor_Invariant.imapF(functorIdentity)
};
var extendIdentity = {
    extend: function (f) {
        return function (m) {
            return f(m);
        };
    },
    Functor0: function () {
        return functorIdentity;
    }
};
var euclideanRingIdentity = function (dictEuclideanRing) {
    return dictEuclideanRing;
};
var eqIdentity = function (dictEq) {
    return dictEq;
};
var eq1Identity = {
    eq1: function (dictEq) {
        return Data_Eq.eq(eqIdentity(dictEq));
    }
};
var ord1Identity = {
    compare1: function (dictOrd) {
        return Data_Ord.compare(ordIdentity(dictOrd));
    },
    Eq10: function () {
        return eq1Identity;
    }
};
var comonadIdentity = {
    extract: function (v) {
        return v;
    },
    Extend0: function () {
        return extendIdentity;
    }
};
var commutativeRingIdentity = function (dictCommutativeRing) {
    return dictCommutativeRing;
};
var boundedIdentity = function (dictBounded) {
    return dictBounded;
};
var booleanAlgebraIdentity = function (dictBooleanAlgebra) {
    return dictBooleanAlgebra;
};
var applyIdentity = {
    apply: function (v) {
        return function (v1) {
            return v(v1);
        };
    },
    Functor0: function () {
        return functorIdentity;
    }
};
var bindIdentity = {
    bind: function (v) {
        return function (f) {
            return f(v);
        };
    },
    Apply0: function () {
        return applyIdentity;
    }
};
var applicativeIdentity = {
    pure: Identity,
    Apply0: function () {
        return applyIdentity;
    }
};
var monadIdentity = {
    Applicative0: function () {
        return applicativeIdentity;
    },
    Bind1: function () {
        return bindIdentity;
    }
};
var altIdentity = {
    alt: function (x) {
        return function (v) {
            return x;
        };
    },
    Functor0: function () {
        return functorIdentity;
    }
};
module.exports = {
    Identity: Identity,
    newtypeIdentity: newtypeIdentity,
    eqIdentity: eqIdentity,
    ordIdentity: ordIdentity,
    boundedIdentity: boundedIdentity,
    heytingAlgebraIdentity: heytingAlgebraIdentity,
    booleanAlgebraIdentity: booleanAlgebraIdentity,
    semigroupIdenity: semigroupIdenity,
    monoidIdentity: monoidIdentity,
    semiringIdentity: semiringIdentity,
    euclideanRingIdentity: euclideanRingIdentity,
    ringIdentity: ringIdentity,
    commutativeRingIdentity: commutativeRingIdentity,
    lazyIdentity: lazyIdentity,
    showIdentity: showIdentity,
    eq1Identity: eq1Identity,
    ord1Identity: ord1Identity,
    functorIdentity: functorIdentity,
    invariantIdentity: invariantIdentity,
    altIdentity: altIdentity,
    applyIdentity: applyIdentity,
    applicativeIdentity: applicativeIdentity,
    bindIdentity: bindIdentity,
    monadIdentity: monadIdentity,
    extendIdentity: extendIdentity,
    comonadIdentity: comonadIdentity
};
