UNPKG

wisp

Version:

Homoiconic JS with clojure syntax, s-expressions & macros

715 lines 105 kB
{ 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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