// Generated by purs version 0.14.5
"use strict";
var Data_Function = require("../Data.Function/index.js");
var Data_List_Lazy = require("../Data.List.Lazy/index.js");
var Data_List_Lazy_Types = require("../Data.List.Lazy.Types/index.js");
var Data_Monoid = require("../Data.Monoid/index.js");
var Data_Semigroup = require("../Data.Semigroup/index.js");
var Data_Show = require("../Data.Show/index.js");
var Partial_Unsafe = require("../Partial.Unsafe/index.js");
var ZipList = function (x) {
    return x;
};
var traversableZipList = Data_List_Lazy_Types.traversableList;
var showZipList = function (dictShow) {
    return {
        show: function (v) {
            return "(ZipList " + (Data_Show.show(Data_List_Lazy_Types.showList(dictShow))(v) + ")");
        }
    };
};
var semigroupZipList = Data_List_Lazy_Types.semigroupList;
var ordZipList = function (dictOrd) {
    return Data_List_Lazy_Types.ordList(dictOrd);
};
var newtypeZipList = {
    Coercible0: function () {
        return undefined;
    }
};
var monoidZipList = Data_List_Lazy_Types.monoidList;
var functorZipList = Data_List_Lazy_Types.functorList;
var foldableZipList = Data_List_Lazy_Types.foldableList;
var eqZipList = function (dictEq) {
    return Data_List_Lazy_Types.eqList(dictEq);
};
var applyZipList = {
    apply: function (v) {
        return function (v1) {
            return Data_List_Lazy.zipWith(Data_Function.apply)(v)(v1);
        };
    },
    Functor0: function () {
        return functorZipList;
    }
};
var zipListIsNotBind = function (dictFail) {
    return {
        bind: Partial_Unsafe.unsafeCrashWith("bind: unreachable"),
        Apply0: function () {
            return applyZipList;
        }
    };
};
var applicativeZipList = {
    pure: function ($14) {
        return ZipList(Data_List_Lazy.repeat($14));
    },
    Apply0: function () {
        return applyZipList;
    }
};
var altZipList = {
    alt: function (v) {
        return function (v1) {
            return ZipList(Data_Semigroup.append(Data_List_Lazy_Types.semigroupList)(v)(Data_List_Lazy.drop(Data_List_Lazy.length(v))(v1)));
        };
    },
    Functor0: function () {
        return functorZipList;
    }
};
var plusZipList = {
    empty: Data_Monoid.mempty(monoidZipList),
    Alt0: function () {
        return altZipList;
    }
};
var alternativeZipList = {
    Applicative0: function () {
        return applicativeZipList;
    },
    Plus1: function () {
        return plusZipList;
    }
};
module.exports = {
    ZipList: ZipList,
    showZipList: showZipList,
    newtypeZipList: newtypeZipList,
    eqZipList: eqZipList,
    ordZipList: ordZipList,
    semigroupZipList: semigroupZipList,
    monoidZipList: monoidZipList,
    foldableZipList: foldableZipList,
    traversableZipList: traversableZipList,
    functorZipList: functorZipList,
    applyZipList: applyZipList,
    applicativeZipList: applicativeZipList,
    altZipList: altZipList,
    plusZipList: plusZipList,
    alternativeZipList: alternativeZipList,
    zipListIsNotBind: zipListIsNotBind
};
