fp-ts-std
Version:
The missing pseudo-standard library for fp-ts.
9 lines (8 loc) • 417 B
JavaScript
import * as IO from "fp-ts/IO";
import * as Rand from "fp-ts/Random";
import * as RA from "fp-ts/ReadonlyArray";
import { flow, pipe } from "fp-ts/function";
import { extractAt } from "./Array";
import { decrement } from "./Number";
import { unsafeUnwrap } from "./Option";
export const randomExtract = (xs) => pipe(Rand.randomInt(0, pipe(xs, RA.size, decrement)), IO.map(flow(i => extractAt(i)(xs), unsafeUnwrap)));