wisp
Version:
Homoiconic JS with clojure syntax, s-expressions & macros
715 lines • 105 kB
JavaScript
{
var _ns_ = {
id: 'wisp.sequence',
doc: void 0
};
var wisp_runtime = require('./runtime');
var isNil = wisp_runtime.isNil;
var isVector = wisp_runtime.isVector;
var isFn = wisp_runtime.isFn;
var isNumber = wisp_runtime.isNumber;
var isString = wisp_runtime.isString;
var isDictionary = wisp_runtime.isDictionary;
var isSet = wisp_runtime.isSet;
var keyValues = wisp_runtime.keyValues;
var str = wisp_runtime.str;
var int = wisp_runtime.int;
var dec = wisp_runtime.dec;
var inc = wisp_runtime.inc;
var min = wisp_runtime.min;
var merge = wisp_runtime.merge;
var dictionary = wisp_runtime.dictionary;
var get = wisp_runtime.get;
var isIterable = wisp_runtime.isIterable;
var isEqual = wisp_runtime.isEqual;
var complement = wisp_runtime.complement;
var identity = wisp_runtime.identity;
var isList = wisp_runtime.isList;
var isLazySeq = wisp_runtime.isLazySeq;
var isIdentitySet = wisp_runtime.isIdentitySet;
}
var _wispTypes = isEqual._wispTypes;
var listIterator = function listIterator() {
return function () {
var selfø1 = this;
return {
'next': function () {
return isEmpty(selfø1) ? { 'done': true } : function () {
var xø1 = first(selfø1);
selfø1 = rest(selfø1);
return { 'value': xø1 };
}.call(this);
}
};
}.call(this);
};
var seqToString = function seqToString(lparen, rparen) {
return function () {
return function loop() {
var recur = loop;
var listø1 = this;
var resultø1 = '';
do {
recur = isEmpty(listø1) ? '' + lparen + resultø1.substr(1) + rparen : (loop[0] = rest(listø1), loop[1] = '' + resultø1 + ' ' + function () {
var xø1 = first(listø1);
return isVector(xø1) ? '' + '[' + xø1.join(' ') + ']' : isNil(xø1) ? 'nil' : isString(xø1) ? JSON.stringify(xø1) : isNumber(xø1) ? JSON.stringify(xø1) : 'else' ? xø1 : void 0;
}.call(this), loop);
} while (listø1 = loop[0], resultø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
};
var List = function List(head, tail) {
this.head = head;
this.tail = tail || list();
this.length = isNil(this.tail) || isDictionary(this.tail) || isNumber(this.tail.length) ? inc(count(this.tail)) : void 0;
return this;
};
List.prototype.length = 0;
List.type = (_wispTypes || 0)['list'];
List.prototype.type = List.type;
List.prototype.tail = Object.create(List.prototype);
List.prototype.toString = seqToString('(', ')');
List.prototype[Symbol.iterator] = listIterator;
var lazySeqValue = function lazySeqValue(lazySeq) {
return lazySeq.realized ? lazySeq.x : function () {
var xø1 = lazySeq.x();
lazySeq.realized = true;
isEmpty(xø1) ? lazySeq.length = 0 : void 0;
return lazySeq.x = xø1;
}.call(this);
};
var LazySeq = function LazySeq(realized, x) {
this.realized = realized || false;
this.x = x;
return this;
};
LazySeq.type = (_wispTypes || 0)['lazy-seq'];
LazySeq.prototype.type = LazySeq.type;
LazySeq.prototype[Symbol.iterator] = listIterator;
var lazySeq = exports.lazySeq = function lazySeq(realized, body) {
return new LazySeq(realized, body);
};
var cloneProtoProps = function cloneProtoProps(from, to) {
return Object.assign.apply(void 0, [to].concat(Object.getOwnPropertyNames(from.__proto__).map(function ($1) {
return function () {
var xø1 = from[$1];
return dictionary($1, isFn(xø1) ? xø1.bind(from) : xø1);
}.call(this);
})));
};
var identitySet = exports.identitySet = function identitySet() {
var items = Array.prototype.slice.call(arguments, 0);
return function () {
var jsSetø1 = new Set(items);
var fø1 = function ($1, $2) {
return get.apply(void 0, [
jsSetø1,
$1,
$2
]);
};
cloneProtoProps(jsSetø1, fø1);
fø1.toString = seqToString('#{', '}');
fø1.__proto__ = jsSetø1;
Object.defineProperty(fø1, 'length', { 'value': fø1.size });
fø1[Symbol.iterator] = fø1.values;
fø1['type'] = identitySet.type;
return fø1;
}.call(this);
};
identitySet.type = (_wispTypes || 0)['set'];
var set = exports.set = identitySet;
var isLazySeq = exports.isLazySeq = isLazySeq;
var isIdentitySet = exports.isIdentitySet = isIdentitySet;
var isList = exports.isList = isList;
isEqual._seqEqual = function (x, y) {
return (isVector(x) || isSeq(x)) && (isVector(y) || isSeq(y)) && function loop() {
var recur = loop;
var xø2 = seq(x);
var yø2 = seq(y);
do {
recur = isVector(xø2) && isVector(yø2) ? isEqual(count(xø2), count(yø2)) && xø2.every(function ($1, $2) {
return isEqual($1, yø2[$2]);
}) : isEmpty(xø2) || isEmpty(yø2) ? isEmpty(xø2) && isEmpty(yø2) : !isEqual(first(xø2), first(yø2)) ? false : 'else' ? (loop[0] = rest(xø2), loop[1] = rest(yø2), loop) : void 0;
} while (xø2 = loop[0], yø2 = loop[1], recur === loop);
return recur;
}.call(this);
};
var list = exports.list = function list() {
return arguments.length === 0 ? Object.create(List.prototype) : Array.prototype.slice.call(arguments).reduceRight(function (tail, head) {
return cons(head, tail);
}, list());
};
var cons = exports.cons = function cons(head, tail) {
return new List(head, tail);
};
var isSequential = exports.isSequential = function isSequential(x) {
return isSeq(x) || isVector(x) || isDictionary(x) || isSet(x) || isString(x);
};
var isNative = function isNative(sequence) {
return isVector(sequence) || isString(sequence) || isDictionary(sequence);
};
var reverse = exports.reverse = function reverse(sequence) {
return isVector(sequence) ? vec(sequence).reverse() : into(void 0, sequence);
};
var range = exports.range = function range() {
switch (arguments.length) {
case 1:
var end = arguments[0];
return range(0, end, 1);
case 2:
var start = arguments[0];
var end = arguments[1];
return range(start, end, 1);
case 3:
var start = arguments[0];
var end = arguments[1];
var step = arguments[2];
return step < 0 ? range(0 - start, 0 - end, 0 - step).map(function ($1) {
return 0 - $1;
}) : Array.from({ 'length': (end + step - start - 1) / step }, function (_, i) {
return start + i * step;
});
default:
throw RangeError('Wrong number of arguments passed');
}
};
var mapv = exports.mapv = function mapv(f) {
var sequences = Array.prototype.slice.call(arguments, 1);
return function () {
var vectorsø1 = sequences.map(vec);
var nø1 = min.apply(void 0, vectorsø1.map(count));
return range(nø1).map(function (i) {
return f.apply(void 0, vectorsø1.map(function ($1) {
return $1[i];
}));
});
}.call(this);
};
var map = exports.map = function map(f) {
var sequences = Array.prototype.slice.call(arguments, 1);
return function () {
var resultø1 = mapv.apply(void 0, [f].concat(sequences));
return isNative(first(sequences)) ? resultø1 : list.apply(void 0, resultø1);
}.call(this);
};
var mapIndexed = exports.mapIndexed = function mapIndexed(f) {
var sequences = Array.prototype.slice.call(arguments, 1);
return function () {
var sequenceø1 = first(sequences);
var nø1 = count(sequenceø1);
var indicesø1 = range(nø1);
return map.apply(void 0, [
f,
isNative(sequenceø1) ? indicesø1 : list.apply(void 0, indicesø1)
].concat(sequences));
}.call(this);
};
var filter = exports.filter = function filter(isF, sequence) {
return isNil(sequence) ? list() : isSeq(sequence) ? filterList(isF, sequence) : isVector(sequence) ? sequence.filter(function ($1) {
return isF($1);
}) : 'else' ? filter(isF, seq(sequence)) : void 0;
};
var filterList = function filterList(isF, sequence) {
return function loop() {
var recur = loop;
var resultø1 = list();
var itemsø1 = sequence;
do {
recur = isEmpty(itemsø1) ? reverse(resultø1) : (loop[0] = isF(first(itemsø1)) ? cons(first(itemsø1), resultø1) : resultø1, loop[1] = rest(itemsø1), loop);
} while (resultø1 = loop[0], itemsø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
var filterv = exports.filterv = function filterv(isF, sequence) {
return vec(filter(isF, sequence));
};
var reduce = exports.reduce = function reduce(f) {
var params = Array.prototype.slice.call(arguments, 1);
return function () {
var hasInitialø1 = count(params) >= 2;
var initialø1 = hasInitialø1 ? first(params) : void 0;
var sequenceø1 = hasInitialø1 ? second(params) : first(params);
return hasInitialø1 ? vec(sequenceø1).reduce(f, initialø1) : vec(sequenceø1).reduce(f);
}.call(this);
};
var count = exports.count = function count(sequence) {
return sequence && isNumber(sequence.length) ? sequence.length : function () {
var itø1 = seq(sequence);
return isNil(itø1) ? 0 : isLazySeq(itø1) ? count(vec(itø1)) : 'else' ? itø1.length : void 0;
}.call(this);
};
var isEmpty = exports.isEmpty = function isEmpty(sequence) {
return function () {
var itø1 = seq(sequence);
return 0 === (!isLazySeq(itø1) ? count(itø1) : (function () {
first(itø1);
return itø1.length;
})());
}.call(this);
};
var first = exports.first = function first(sequence) {
return isNil(sequence) ? void 0 : isList(sequence) ? sequence.head : isVector(sequence) || isString(sequence) ? (sequence || 0)[0] : isLazySeq(sequence) ? first(lazySeqValue(sequence)) : 'else' ? first(seq(sequence)) : void 0;
};
var second = exports.second = function second(sequence) {
return isNil(sequence) ? void 0 : isList(sequence) ? first(rest(sequence)) : isVector(sequence) || isString(sequence) ? (sequence || 0)[1] : isLazySeq(sequence) ? second(lazySeqValue(sequence)) : 'else' ? first(rest(seq(sequence))) : void 0;
};
var third = exports.third = function third(sequence) {
return isNil(sequence) ? void 0 : isList(sequence) ? first(rest(rest(sequence))) : isVector(sequence) || isString(sequence) ? (sequence || 0)[2] : isLazySeq(sequence) ? third(lazySeqValue(sequence)) : 'else' ? second(rest(seq(sequence))) : void 0;
};
var rest = exports.rest = function rest(sequence) {
return isNil(sequence) ? list() : isList(sequence) ? sequence.tail : isVector(sequence) || isString(sequence) ? sequence.slice(1) : isLazySeq(sequence) ? rest(lazySeqValue(sequence)) : 'else' ? rest(seq(sequence)) : void 0;
};
var lastOfList = function lastOfList(list) {
return function loop() {
var recur = loop;
var itemø1 = first(list);
var itemsø1 = rest(list);
do {
recur = isEmpty(itemsø1) ? itemø1 : (loop[0] = first(itemsø1), loop[1] = rest(itemsø1), loop);
} while (itemø1 = loop[0], itemsø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
var last = exports.last = function last(sequence) {
return isVector(sequence) || isString(sequence) ? (sequence || 0)[dec(count(sequence))] : isList(sequence) ? lastOfList(sequence) : isNil(sequence) ? void 0 : isLazySeq(sequence) ? last(lazySeqValue(sequence)) : 'else' ? last(seq(sequence)) : void 0;
};
var butlast = exports.butlast = function butlast(sequence) {
return function () {
var itemsø1 = isNil(sequence) ? void 0 : isString(sequence) ? subs(sequence, 0, dec(count(sequence))) : isVector(sequence) ? sequence.slice(0, dec(count(sequence))) : isList(sequence) ? list.apply(void 0, butlast(vec(sequence))) : isLazySeq(sequence) ? butlast(lazySeqValue(sequence)) : 'else' ? butlast(seq(sequence)) : void 0;
return !isEmpty(itemsø1) ? itemsø1 : void 0;
}.call(this);
};
var take = exports.take = function take(n, sequence) {
return isNil(sequence) ? list() : isVector(sequence) ? takeFromVector(n, sequence) : isList(sequence) ? takeFromList(n, sequence) : isLazySeq(sequence) ? n > 0 ? take(n, lazySeqValue(sequence)) : void 0 : 'else' ? take(n, seq(sequence)) : void 0;
};
var takeWhile = exports.takeWhile = function takeWhile(predicate, sequence) {
return function loop() {
var recur = loop;
var itemsø1 = sequence;
var resultø1 = [];
do {
recur = function () {
var headø1 = first(itemsø1);
var tailø1 = rest(itemsø1);
return !isEmpty(itemsø1) && predicate(headø1) ? (loop[0] = tailø1, loop[1] = conj(resultø1, headø1), loop) : isNative(sequence) ? resultø1 : list.apply(void 0, resultø1);
}.call(this);
} while (itemsø1 = loop[0], resultø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
var takeFromVector = function takeFromVector(n, vector) {
return vector.slice(0, n);
};
var takeFromList = function takeFromList(n, sequence) {
return function loop() {
var recur = loop;
var takenø1 = list();
var itemsø1 = sequence;
var nø2 = int(n) || 0;
do {
recur = nø2 <= 0 || isEmpty(itemsø1) ? reverse(takenø1) : (loop[0] = cons(first(itemsø1), takenø1), loop[1] = rest(itemsø1), loop[2] = dec(nø2), loop);
} while (takenø1 = loop[0], itemsø1 = loop[1], nø2 = loop[2], recur === loop);
return recur;
}.call(this);
};
var dropFromList = function dropFromList(n, sequence) {
return function loop() {
var recur = loop;
var leftø1 = n;
var itemsø1 = sequence;
do {
recur = leftø1 < 1 || isEmpty(itemsø1) ? itemsø1 : (loop[0] = dec(leftø1), loop[1] = rest(itemsø1), loop);
} while (leftø1 = loop[0], itemsø1 = loop[1], recur === loop);
return recur;
}.call(this);
};
var drop = exports.drop = function drop(n, sequence) {
return n <= 0 ? sequence : isString(sequence) ? sequence.substr(n) : isVector(sequence) ? sequence.slice(n) : isList(sequence) ? dropFromList(n, sequence) : isNil(sequence) ? list() : isLazySeq(sequence) ? drop(n, lazySeqValue(sequence)) : 'else' ? drop(n, seq(sequence)) : void 0;
};
var dropWhile = exports.dropWhile = function dropWhile(predicate, sequence) {
return function loop() {
var recur = loop;
var itemsø1 = seq(sequence);
do {
recur = isEmpty(itemsø1) || !predicate(first(itemsø1)) ? itemsø1 : (loop[0] = rest(itemsø1), loop);
} while (itemsø1 = loop[0], recur === loop);
return recur;
}.call(this);
};
var conjList = function conjList(sequence, items) {
return reduce(function (result, item) {
return cons(item, result);
}, sequence, items);
};
var ensureDictionary = function ensureDictionary(x) {
return !isVector(x) ? x : dictionary(first(x), second(x));
};
var conj = exports.conj = function conj(sequence) {
var items = Array.prototype.slice.call(arguments, 1);
return isVector(sequence) ? sequence.concat(items) : isString(sequence) ? '' + sequence + str.apply(void 0, items) : isNil(sequence) ? list.apply(void 0, reverse(items)) : isSeq(sequence) ? conjList(sequence, items) : isDictionary(sequence) ? merge(sequence, merge.apply(void 0, mapv(ensureDictionary, items))) : isSet(sequence) ? identitySet.apply(void 0, into(vec(sequence), items)) : 'else' ? (function () {
throw TypeError('' + 'Type can\'t be conjoined ' + sequence);
})() : void 0;
};
var disj = exports.disj = function disj(coll) {
var ks = Array.prototype.slice.call(arguments, 1);
return function () {
var predicateø1 = complement(identitySet.apply(void 0, ks));
return isEmpty(ks) ? coll : isSet(coll) ? identitySet.apply(void 0, filterv(predicateø1, coll)) : isDictionary(coll) ? into({}, filter(function ($1) {
return predicateø1(first($1));
}, coll)) : 'else' ? (function () {
throw TypeError('' + 'Type can\'t be disjoined ' + coll);
})() : void 0;
}.call(this);
};
var into = exports.into = function into(to, from) {
return conj.apply(void 0, [to].concat(vec(from)));
};
var zipmap = exports.zipmap = function zipmap(keys, vals) {
return into({}, map(vector, keys, vals));
};
var assoc = exports.assoc = function assoc(source) {
var keyValues = Array.prototype.slice.call(arguments, 1);
return conj(source, dictionary.apply(void 0, keyValues));
};
var dissoc = exports.dissoc = function dissoc(coll) {
var ks = Array.prototype.slice.call(arguments, 1);
return isDictionary(coll) ? disj.apply(void 0, [coll].concat(ks)) : (function () {
throw TypeError('' + 'Can only dissoc on dictionaries');
})();
};
var concat = exports.concat = function concat() {
var sequences = Array.prototype.slice.call(arguments, 0);
return reduce(function ($1, $2) {
return conjList($1, reverse($2));
}, function () {
var tailø1 = last(sequences);
return isLazySeq(tailø1) ? tailø1 : list.apply(void 0, vec(tailø1));
}.call(this), rest(reverse(sequences)));
};
var mapcat = exports.mapcat = function mapcat(f) {
var colls = Array.prototype.slice.call(arguments, 1);
return concat.apply(void 0, mapv.apply(void 0, [f].concat(colls)));
};
var empty = exports.empty = function empty(sequence) {
return isList(sequence) ? list() : isVector(sequence) ? [] : isString(sequence) ? '' : isDictionary(sequence) ? {} : isSet(sequence) ? set() : isLazySeq(sequence) ? lazySeq.call(void 0, false, function () {
return void 0;
}) : void 0;
};
var seq = exports.seq = function seq(sequence) {
return isNil(sequence) ? void 0 : isVector(sequence) || isSeq(sequence) ? sequence : isString(sequence) ? Array.prototype.slice.call(sequence) : isDictionary(sequence) ? keyValues(sequence) : isIterable(sequence) ? iteratorToLseq((sequence || 0)[Symbol.iterator]()) : 'default' ? (function () {
throw TypeError('' + 'Can not seq ' + sequence);
})() : void 0;
};
var seq_ = exports.seq_ = function seq_(sequence) {
return function () {
var itø1 = seq(sequence);
return !isEmpty(itø1) ? itø1 : void 0;
}.call(this);
};
var isSeq = exports.isSeq = function isSeq(sequence) {
return isList(sequence) || isLazySeq(sequence);
};
var iteratorToLseq = function iteratorToLseq(iterator) {
return unfold(function ($1) {
return function () {
var xø1 = $1.next();
return !xø1.done ? [
xø1.value,
$1
] : void 0;
}.call(this);
}, iterator);
};
var vec = exports.vec = function vec(sequence) {
return isNil(sequence) ? [] : isVector(sequence) || isList(sequence) ? Array.from(sequence) : isLazySeq(sequence) ? function () {
var xsø1 = Array.from(sequence);
sequence.length = xsø1.length;
return xsø1;
}.call(this) : 'else' ? vec(seq(sequence)) : void 0;
};
var vector = exports.vector = function vector() {
var sequence = Array.prototype.slice.call(arguments, 0);
return sequence;
};
var sortComparator = isEqual([
1,
2,
3
], [
2,
1,
3
].sort(function (a, b) {
return a < b ? 0 : 1;
})) ? function ($1) {
return function (a, b) {
return $1(b, a) ? 1 : 0;
};
} : function ($1) {
return function (a, b) {
return $1(a, b) ? -1 : 0;
};
};
var sort = exports.sort = function sort(f, items) {
return function () {
var hasComparatorø1 = isFn(f);
var itemsø2 = !hasComparatorø1 && isNil(items) ? f : items;
var compareø1 = hasComparatorø1 ? sortComparator(f) : void 0;
var resultø1 = vec(itemsø2).sort(compareø1);
return isNil(itemsø2) ? list() : isVector(itemsø2) ? resultø1 : 'else' ? list.apply(void 0, resultø1) : void 0;
}.call(this);
};
var repeatedly = exports.repeatedly = function repeatedly(n, f) {
return Array.from({ 'length': n }, f);
};
var repeat = exports.repeat = function repeat(n, x) {
return repeatedly(n, function () {
return x;
});
};
var isEvery = exports.isEvery = function isEvery(predicate, sequence) {
return vec(sequence).every(function ($1) {
return predicate($1);
});
};
var some = exports.some = function some(pred, coll) {
return function loop() {
var recur = loop;
var itemsø1 = seq(coll);
do {
recur = !isEmpty(itemsø1) ? pred(first(itemsø1)) || (loop[0] = rest(itemsø1), loop) : void 0;
} while (itemsø1 = loop[0], recur === loop);
return recur;
}.call(this);
};
var partition = exports.partition = function partition() {
switch (arguments.length) {
case 2:
var n = arguments[0];
var coll = arguments[1];
return partition(n, n, coll);
case 3:
var n = arguments[0];
var step = arguments[1];
var coll = arguments[2];
return partition(n, step, [], coll);
case 4:
var n = arguments[0];
var step = arguments[1];
var pad = arguments[2];
var coll = arguments[3];
return function loop() {
var recur = loop;
var resultø1 = [];
var itemsø1 = seq(coll);
do {
recur = function () {
var chunkø1 = take(n, itemsø1);
var sizeø1 = count(chunkø1);
return sizeø1 === n ? (loop[0] = conj(resultø1, chunkø1), loop[1] = drop(step, itemsø1), loop) : 0 === sizeø1 ? resultø1 : n > sizeø1 + count(pad) ? resultø1 : 'else' ? conj(resultø1, take(n, vec(concat(chunkø1, pad)))) : void 0;
}.call(this);
} while (resultø1 = loop[0], itemsø1 = loop[1], recur === loop);
return recur;
}.call(this);
default:
throw RangeError('Wrong number of arguments passed');
}
};
var interleave = exports.interleave = function interleave() {
var sequences = Array.prototype.slice.call(arguments, 0);
return isEmpty(sequences) ? [] : function loop() {
var recur = loop;
var resultø1 = [];
var sequencesø2 = sequences;
do {
recur = some(isEmpty, sequencesø2) ? vec(resultø1) : (loop[0] = concat(resultø1, map(first, sequencesø2)), loop[1] = map(rest, sequencesø2), loop);
} while (resultø1 = loop[0], sequencesø2 = loop[1], recur === loop);
return recur;
}.call(this);
};
var nth = exports.nth = function nth(sequence, index, notFound) {
return function () {
var sequenceø2 = seq_(sequence);
return isNil(sequenceø2) ? notFound : isSeq(sequenceø2) ? function () {
var ifLetBinding1ø1 = seq_(drop(index, sequenceø2));
return ifLetBinding1ø1 ? function () {
var itø1 = ifLetBinding1ø1;
return first(itø1);
}.call(this) : notFound;
}.call(this) : isVector(sequenceø2) || isString(sequenceø2) ? index < count(sequenceø2) ? sequenceø2[index] : notFound : 'else' ? (function () {
throw TypeError('Unsupported type');
})() : void 0;
}.call(this);
};
var isContains = exports.isContains = function isContains(coll, v) {
return isSet(coll) ? coll.has(v) : isDictionary(coll) || isVector(coll) || isString(coll) ? coll.hasOwnProperty(v) : 'else' ? false : void 0;
};
var union = exports.union = function union() {
var sets = Array.prototype.slice.call(arguments, 0);
return into(set(), concat.apply(void 0, sets));
};
var difference = exports.difference = function difference(s1) {
var sets = Array.prototype.slice.call(arguments, 1);
return into(set(), filter(complement(union.apply(void 0, sets)), s1));
};
var intersection = exports.intersection = function intersection() {
var sets = Array.prototype.slice.call(arguments, 0);
return function () {
var setsø2 = mapv(function ($1) {
return into(set(), $1);
}, sets);
var isInEachø1 = function (x) {
return isEvery(function ($1) {
return $1.has(x);
}, setsø2);
};
var minSizeø1 = min.apply(void 0, mapv(count, setsø2));
var smallestø1 = setsø2.find(function ($1) {
return isEqual(minSizeø1, count($1));
});
return into(set(), filter(isInEachø1, smallestø1));
}.call(this);
};
var isSubset = exports.isSubset = function isSubset(set1, set2) {
return isSet(set2) ? isEvery(function ($1) {
return set2.has($1);
}, set1) : isSubset(set1, into(set(), set2));
};
var isSuperset = exports.isSuperset = function isSuperset(set1, set2) {
return isSubset(set2, set1);
};
var unfold = exports.unfold = function unfold(f, x) {
return lazySeq.call(void 0, false, function () {
return function () {
var ifLetBinding2ø1 = f(x);
return ifLetBinding2ø1 ? function () {
var nextø1 = ifLetBinding2ø1;
return cons(first(nextø1), unfold(f, second(nextø1)));
}.call(this) : void 0;
}.call(this);
});
};
var iterate = exports.iterate = function iterate(f, x) {
return lazySeq.call(void 0, false, function () {
return cons(x, iterate(f, f(x)));
});
};
var cycle = exports.cycle = function cycle(coll) {
return lazySeq.call(void 0, false, function () {
return !isEmpty(coll) ? concat(coll, cycle(coll)) : void 0;
});
};
var infiniteRange = exports.infiniteRange = function infiniteRange() {
switch (arguments.length) {
case 0:
return infiniteRange(0);
case 1:
var n = arguments[0];
return iterate(inc, n);
case 2:
var n = arguments[0];
var step = arguments[1];
return iterate(function ($1) {
return $1 + step;
}, n);
default:
throw RangeError('Wrong number of arguments passed');
}
};
var lazyMap = exports.lazyMap = function lazyMap(f) {
var sequences = Array.prototype.slice.call(arguments, 1);
return unfold(function ($1) {
return !some(isEmpty, $1) ? [
f.apply(void 0, mapv(first, $1)),
mapv(rest, $1)
] : void 0;
}, sequences);
};
var lazyFilter = exports.lazyFilter = function lazyFilter(f, sequence) {
return unfold(function ($1) {
return function loop() {
var recur = loop;
var xsø1 = $1;
do {
recur = isEmpty(xsø1) ? void 0 : f(first(xsø1)) ? [
first(xsø1),
rest(xsø1)
] : 'else' ? (loop[0] = rest(xsø1), loop) : void 0;
} while (xsø1 = loop[0], recur === loop);
return recur;
}.call(this);
}, seq(sequence));
};
var lazyConcat = exports.lazyConcat = function lazyConcat() {
var sequences = Array.prototype.slice.call(arguments, 0);
return !isEmpty(sequences) ? function iter(xs) {
return lazySeq.call(void 0, false, function () {
return isEmpty(xs) ? lazyConcat.apply(void 0, rest(sequences)) : cons(first(xs), iter(rest(xs)));
});
}(seq(first(sequences))) : void 0;
};
var lazyPartition = exports.lazyPartition = function lazyPartition() {
switch (arguments.length) {
case 2:
var n = arguments[0];
var coll = arguments[1];
return lazyPartition(n, n, coll);
case 3:
var n = arguments[0];
var step = arguments[1];
var coll = arguments[2];
return lazyPartition(n, step, [], coll);
case 4:
var n = arguments[0];
var step = arguments[1];
var pad = arguments[2];
var coll = arguments[3];
return unfold(function ($1) {
return function () {
var chunkø1 = take(n, concat(take(n, $1), pad));
return !isEmpty($1) && n === count(chunkø1) ? [
chunkø1,
drop(step, $1)
] : void 0;
}.call(this);
}, coll);
default:
throw RangeError('Wrong number of arguments passed');
}
};
var run = exports.run = function run(proc, coll) {
return reduce(function (_, x) {
proc(x);
return void 0;
}, void 0, coll);
};
var dorun = exports.dorun = function dorun() {
switch (arguments.length) {
case 1:
var coll = arguments[0];
return dorun(Infinity, coll);
case 2:
var n = arguments[0];
var coll = arguments[1];
return run(identity, take(n, coll));
default:
throw RangeError('Wrong number of arguments passed');
}
};
var doall = exports.doall = function doall() {
switch (arguments.length) {
case 1:
var coll = arguments[0];
return doall(Infinity, coll);
case 2:
var n = arguments[0];
var coll = arguments[1];
dorun(n, coll);
return coll;
default:
throw RangeError('Wrong number of arguments passed');
}
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbImFub255bW91cy53aXNwIl0sIm5hbWVzIjpbIl9uc18iLCJpZCIsImRvYyIsImlzTmlsIiwiaXNWZWN0b3IiLCJpc0ZuIiwiaXNOdW1iZXIiLCJpc1N0cmluZyIsImlzRGljdGlvbmFyeSIsImlzU2V0Iiwia2V5VmFsdWVzIiwic3RyIiwiaW50IiwiZGVjIiwiaW5jIiwibWluIiwibWVyZ2UiLCJkaWN0aW9uYXJ5IiwiZ2V0IiwiaXNJdGVyYWJsZSIsImlzRXF1YWwiLCJjb21wbGVtZW50IiwiaWRlbnRpdHkiLCJpc0xpc3QiLCJpc0xhenlTZXEiLCJpc0lkZW50aXR5U2V0IiwiX3dpc3BUeXBlcyIsImxpc3RJdGVyYXRvciIsInNlbGbDuDEiLCJ0aGlzIiwiaXNFbXB0eSIsInjDuDEiLCJmaXJzdCIsInJlc3QiLCJzZXFUb1N0cmluZyIsImxwYXJlbiIsInJwYXJlbiIsImxpc3TDuDEiLCJyZXN1bHTDuDEiLCJzdWJzdHIiLCJqb2luIiwiSlNPTiIsInN0cmluZ2lmeSIsIkxpc3QiLCJoZWFkIiwidGFpbCIsImxpc3QiLCJsZW5ndGgiLCJjb3VudCIsInByb3RvdHlwZS5sZW5ndGgiLCJ0eXBlIiwicHJvdG90eXBlLnR5cGUiLCJwcm90b3R5cGUudGFpbCIsIk9iamVjdCIsImNyZWF0ZSIsInByb3RvdHlwZSIsInByb3RvdHlwZS50b1N0cmluZyIsIlN5bWJvbCIsIml0ZXJhdG9yIiwibGF6eVNlcVZhbHVlIiwibGF6eVNlcSIsInJlYWxpemVkIiwieCIsIkxhenlTZXEiLCJleHBvcnRzIiwiYm9keSIsImNsb25lUHJvdG9Qcm9wcyIsImZyb20iLCJ0byIsImFzc2lnbiIsImdldE93blByb3BlcnR5TmFtZXMiLCJfX3Byb3RvX18iLCJtYXAiLCIkMSIsImJpbmQiLCJpZGVudGl0eVNldCIsIml0ZW1zIiwianNTZXTDuDEiLCJmw7gxIiwiJDIiLCJ0b1N0cmluZyIsImRlZmluZVByb3BlcnR5Iiwic2l6ZSIsInZhbHVlcyIsInNldCIsIl9zZXFFcXVhbCIsInkiLCJpc1NlcSIsInjDuDIiLCJzZXEiLCJ5w7gyIiwiZXZlcnkiLCJhcmd1bWVudHMiLCJBcnJheSIsInByb3RvdHlwZS5zbGljZSIsImNhbGwiLCJyZWR1Y2VSaWdodCIsImNvbnMiLCJpc1NlcXVlbnRpYWwiLCJpc05hdGl2ZSIsInNlcXVlbmNlIiwicmV2ZXJzZSIsInZlYyIsImludG8iLCJyYW5nZSIsImVuZCIsInN0YXJ0Iiwic3RlcCIsIl8iLCJpIiwibWFwdiIsImYiLCJzZXF1ZW5jZXMiLCJ2ZWN0b3Jzw7gxIiwibsO4MSIsIm1hcEluZGV4ZWQiLCJzZXF1ZW5jZcO4MSIsImluZGljZXPDuDEiLCJmaWx0ZXIiLCJpc0YiLCJmaWx0ZXJMaXN0IiwiaXRlbXPDuDEiLCJmaWx0ZXJ2IiwicmVkdWNlIiwicGFyYW1zIiwiaGFzSW5pdGlhbMO4MSIsImluaXRpYWzDuDEiLCJzZWNvbmQiLCJpdMO4MSIsInRoaXJkIiwic2xpY2UiLCJsYXN0T2ZMaXN0IiwiaXRlbcO4MSIsImxhc3QiLCJidXRsYXN0Iiwic3VicyIsInRha2UiLCJuIiwidGFrZUZyb21WZWN0b3IiLCJ0YWtlRnJvbUxpc3QiLCJ0YWtlV2hpbGUiLCJwcmVkaWNhdGUiLCJoZWFkw7gxIiwidGFpbMO4MSIsImNvbmoiLCJ2ZWN0b3IiLCJ0YWtlbsO4MSIsIm7DuDIiLCJkcm9wRnJvbUxpc3QiLCJsZWZ0w7gxIiwiZHJvcCIsImRyb3BXaGlsZSIsImNvbmpMaXN0IiwicmVzdWx0IiwiaXRlbSIsImVuc3VyZURpY3Rpb25hcnkiLCJjb25jYXQiLCJUeXBlRXJyb3IiLCJkaXNqIiwiY29sbCIsImtzIiwicHJlZGljYXRlw7gxIiwiemlwbWFwIiwia2V5cyIsInZhbHMiLCJhc3NvYyIsInNvdXJjZSIsImRpc3NvYyIsIm1hcGNhdCIsImNvbGxzIiwiZW1wdHkiLCJpdGVyYXRvclRvTHNlcSIsInNlcV8iLCJ1bmZvbGQiLCJuZXh0IiwiZG9uZSIsInZhbHVlIiwieHPDuDEiLCJzb3J0Q29tcGFyYXRvciIsInNvcnQiLCJhIiwiYiIsImhhc0NvbXBhcmF0b3LDuDEiLCJpdGVtc8O4MiIsImNvbXBhcmXDuDEiLCJyZXBlYXRlZGx5IiwicmVwZWF0IiwiaXNFdmVyeSIsInNvbWUiLCJwcmVkIiwicGFydGl0aW9uIiwicGFkIiwiY2h1bmvDuDEiLCJzaXplw7gxIiwiaW50ZXJsZWF2ZSIsInNlcXVlbmNlc8O4MiIsIm50aCIsImluZGV4Iiwibm90Rm91bmQiLCJzZXF1ZW5jZcO4MiIsImlzQ29udGFpbnMiLCJ2IiwiaGFzIiwiaGFzT3duUHJvcGVydHkiLCJ1bmlvbiIsInNldHMiLCJkaWZmZXJlbmNlIiwiczEiLCJpbnRlcnNlY3Rpb24iLCJzZXRzw7gyIiwiaXNJbkVhY2jDuDEiLCJtaW5TaXplw7gxIiwic21hbGxlc3TDuDEiLCJmaW5kIiwiaXNTdWJzZXQiLCJzZXQxIiwic2V0MiIsImlzU3VwZXJzZXQiLCJuZXh0w7gxIiwiaXRlcmF0ZSIsImN5Y2xlIiwiaW5maW5pdGVSYW5nZSIsImxhenlNYXAiLCJsYXp5RmlsdGVyIiwibGF6eUNvbmNhdCIsIml0ZXIiLCJ4cyIsImxhenlQYXJ0aXRpb24iLCJydW4iLCJwcm9jIiwiZG9ydW4iLCJJbmZpbml0eSIsImRvYWxsIl0sIm1hcHBpbmdzIjoiO0lBQUEsSUFBQ0EsSSxHQUFEO0FBQUEsWUFBQUMsRSxFQUFJLGVBQUo7QUFBQSxZQUFBQyxHLEVBQUEsSyxDQUFBO0FBQUEsVTs7UUFDa0NDLEtBQUEsRyxhQUFBQSxLO1FBQUtDLFFBQUEsRyxhQUFBQSxRO1FBQVFDLElBQUEsRyxhQUFBQSxJO1FBQUlDLFFBQUEsRyxhQUFBQSxRO1FBQVFDLFFBQUEsRyxhQUFBQSxRO1FBQVFDLFlBQUEsRyxhQUFBQSxZO1FBQVlDLEtBQUEsRyxhQUFBQSxLO1FBQzdDQyxTQUFBLEcsYUFBQUEsUztRQUFXQyxHQUFBLEcsYUFBQUEsRztRQUFJQyxHQUFBLEcsYUFBQUEsRztRQUFJQyxHQUFBLEcsYUFBQUEsRztRQUFJQyxHQUFBLEcsYUFBQUEsRztRQUFJQyxHQUFBLEcsYUFBQUEsRztRQUFJQyxLQUFBLEcs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