all files / lib/ tuples.js

91.18% Statements 62/68
71.43% Branches 20/28
92.31% Functions 12/13
90.91% Lines 60/66
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106  31× 31× 88×   31× 31× 31× 88×   31×                 31×       31× 31×             31×             31×               31×             31×     28× 28× 76×   28×   26×      
"use strict";
function factory() {
    var values = [];
    for (var _i = 0; _i < arguments.length; _i++) {
        values[_i] = arguments[_i];
    }
    var tuple = values.slice(0);
    Object.defineProperty(tuple, "length", { value: tuple.length });
    for (var i = 0, len = tuple.length; i < len; i++) {
        Object.defineProperty(tuple, "_" + (i + 1), { value: tuple[i] });
    }
    Object.defineProperty(tuple, "equals", {
        value: function (other) {
            if (this === other)
                return true;
            if (!other || "_1" in other === false)
                return false;
            Iif (this.length !== other.length)
                return false;
            for (var i = 0; i < this.length; i++) {
                Iif (this[i].equals !== undefined && !this[i].equals(other[i])) {
                    return false;
                }
                else if (this[i] !== other[i]) {
                    return false;
                }
            }
            return true;
        },
    });
    Object.defineProperty(tuple, "toJSON", {
        value: function () {
            return this.slice(0).map(function (i) { return !!i && i.toJSON !== undefined ? i.toJSON() : i; });
        },
    });
    Object.defineProperty(tuple, "toString", { value: function () { return JSON.stringify(this.toJSON()); } });
    Object.defineProperty(tuple, "map", {
        value: function (f) {
            Iif (tuple.length === 0) {
                return TUPLE_ZERO_SINGLETON;
            }
            var arr = new Array(tuple.length);
            for (var i in tuple) {
                arr[i] = f(tuple[i]);
            }
            return factory.apply(void 0, arr);
        },
    });
    Object.defineProperty(tuple, "fmap", {
        value: function (f) {
            Iif (tuple.length === 0) {
                return TUPLE_ZERO_SINGLETON;
            }
            var arr = new Array(tuple.length);
            for (var i in tuple) {
                arr[i] = f(tuple[i])[0];
            }
            return factory.apply(void 0, arr);
        },
    });
    Object.defineProperty(tuple, "applies", {
        value: function (f) {
            return function (tb) {
                Iif (tuple.length === 0) {
                    return TUPLE_ZERO_SINGLETON;
                }
                var arr = new Array(tuple.length);
                for (var i in tuple) {
                    arr[i] = f(tuple[i])(tb[i])[0];
                }
                return factory.apply(void 0, arr);
            };
        },
    });
    Object.defineProperty(tuple, "mbind", {
        value: function (f) {
            Iif (tuple.length === 0) {
                return TUPLE_ZERO_SINGLETON;
            }
            var arr = new Array(tuple.length);
            for (var i in tuple) {
                arr[i] = f[i](tuple[i])[0];
            }
            return factory.apply(void 0, arr);
        },
    });
    return Object.freeze(tuple);
}
var TUPLE_ZERO_SINGLETON = factory();
var Tuples = (function () {
    function Tuples() {
    }
    Tuples.from = function () {
        var args = [];
        for (var _i = 0; _i < arguments.length; _i++) {
            args[_i] = arguments[_i];
        }
        if (args.length === 0) {
            return TUPLE_ZERO_SINGLETON;
        }
        return factory.apply(this, args);
    };
    return Tuples;
}());
exports.Tuples = Tuples;
//# sourceMappingURL=tuples.js.map