Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | 1x 1x 3x 3x 3x 3x 9x 7x 2x 3x 2x 5x | import {Failure, Result, ResultType, Success} from '../result'; import {Folder} from 'fnxt/fnxt-types'; export const fold = <S1, F1, S2, F2>( successFolder: Folder<S1, S2>, initSuccess: S2, failureFolder: Folder<F1, F2>, initFailure: F2, ) => (results: Result<S1, F1>[]): Result<S2, F2> => { const successes: S1[] = []; const failures: F1[] = []; for (const result of results) { if (result.type === ResultType.Success) { successes.push(result.value); } else { failures.push(result.value); } } return (failures.length) ? Failure(failures.reduce((p, c) => failureFolder(p, c), initFailure)) : Success(successes.reduce((p, c) => successFolder(p, c), initSuccess)); }; |