fp-ts-bracket
Version:
Bracket monad for fp-ts
21 lines (20 loc) • 883 B
JavaScript
/* eslint-disable @typescript-eslint/no-explicit-any */
/* eslint-disable @typescript-eslint/no-unsafe-call */
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
/* eslint-disable @typescript-eslint/no-unsafe-return */
/* eslint-disable @typescript-eslint/no-unsafe-member-access */
/* eslint-disable @typescript-eslint/no-unnecessary-type-parameters */
/* eslint-disable @typescript-eslint/unified-signatures */
/* eslint-disable prefer-rest-params */
// NOTE! Bellow code comes from fp-ts internals
/** @internal */
export const dual = (arity, body) => {
const isDataFirst = typeof arity === "number" ? (args) => args.length >= arity : arity;
return function () {
const args = Array.from(arguments);
if (isDataFirst(arguments)) {
return body.apply(this, args);
}
return (self) => body(self, ...args);
};
};