UNPKG

purs-pkg-deps

Version:

Query package dependencies in PureScript package-sets

55 lines (48 loc) 1.36 kB
"use strict"; // jshint maxparams: 3 exports.traverseArrayImpl = (function () { function array1(a) { return [a]; } function array2(a) { return function (b) { return [a, b]; }; } function array3(a) { return function (b) { return function (c) { return [a, b, c]; }; }; } function concat2(xs) { return function (ys) { return xs.concat(ys); }; } return function (apply) { return function (map) { return function (pure) { return function (f) { return function (array) { function go(bot, top) { switch (top - bot) { case 0: return pure([]); case 1: return map(array1)(f(array[bot])); case 2: return apply(map(array2)(f(array[bot])))(f(array[bot + 1])); case 3: return apply(apply(map(array3)(f(array[bot])))(f(array[bot + 1])))(f(array[bot + 2])); default: // This slightly tricky pivot selection aims to produce two // even-length partitions where possible. var pivot = bot + Math.floor((top - bot) / 4) * 2; return apply(map(concat2)(go(bot, pivot)))(go(pivot, top)); } } return go(0, array.length); }; }; }; }; }; })();