E_A.js (2392B)
1 import { Ok } from "./result.js"; 2 export const zip = (xs, ys) => { 3 const lenX = xs.length; 4 const lenY = ys.length; 5 const len = lenX < lenY ? lenX : lenY; 6 const s = new Array(len); 7 for (let i = 0; i < len; i++) { 8 s[i] = [xs[i], ys[i]]; 9 } 10 return s; 11 }; 12 export const accumulate = (items, fn) => { 13 const len = items.length; 14 if (len === 0) 15 return []; 16 const result = new Array(len); 17 result[0] = items[0]; 18 for (let i = 1; i < len; i++) { 19 result[i] = fn(items[i], result[i - 1]); 20 } 21 return result; 22 }; 23 export const accumulateWithError = (items, fn) => { 24 const len = items.length; 25 if (len === 0) 26 return Ok([]); 27 const results = new Array(len); 28 results[0] = items[0]; 29 for (let i = 1; i < len; i++) { 30 const r = fn(items[i], results[i - 1]); 31 if (!r.ok) 32 return r; 33 results[i] = r.value; 34 } 35 return Ok(results); 36 }; 37 export const unzip = (items) => { 38 const len = items.length; 39 const a1 = new Array(len); 40 const a2 = new Array(len); 41 for (let i = 0; i < len; i++) { 42 const [v1, v2] = items[i]; 43 a1[i] = v1; 44 a2[i] = v2; 45 } 46 return [a1, a2]; 47 }; 48 export const pairwise = (items, fn) => { 49 const result = []; 50 for (let i = 1; i < items.length; i++) { 51 result.push(fn(items[i - 1], items[i])); 52 } 53 return result; 54 }; 55 export const pairwiseWithError = (items, fn) => { 56 const result = []; 57 for (let i = 1; i < items.length; i++) { 58 const r = fn(items[i - 1], items[i]); 59 if (!r.ok) 60 return r; 61 result.push(r.value); 62 } 63 return Ok(result); 64 }; 65 export const makeBy = (n, fn) => { 66 const result = []; 67 for (let i = 0; i < n; i++) { 68 result.push(fn(i)); 69 } 70 return result; 71 }; 72 export function shuffle(array) { 73 const shuffledArray = [...array]; 74 for (let i = shuffledArray.length - 1; i > 0; i--) { 75 const j = Math.floor(Math.random() * (i + 1)); 76 [shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]]; 77 } 78 return shuffledArray; 79 } 80 export function isEqual(arr1, arr2) { 81 if (arr1.length !== arr2.length) { 82 return false; 83 } 84 for (let i = 0; i < arr1.length; i++) { 85 if (arr1[i] !== arr2[i]) { 86 return false; 87 } 88 } 89 return true; 90 } 91 //# sourceMappingURL=E_A.js.map