import { result } from "@quri/squiggle-lang"; export function flattenResult(x: result[]): result { if (x.length === 0) { return { tag: "Ok", value: [] }; } else { if (x[0].tag === "Error") { return x[0]; } else { let rest = flattenResult(x.splice(1)); if (rest.tag === "Error") { return rest; } else { return { tag: "Ok", value: [x[0].value].concat(rest.value) }; } } } } export function resultBind( x: result, fn: (y: a) => result ): result { if (x.tag === "Ok") { return fn(x.value); } else { return x; } } export function all(arr: boolean[]): boolean { return arr.reduce((x, y) => x && y, true); } export function some(arr: boolean[]): boolean { return arr.reduce((x, y) => x || y, false); }