UNPKG

@typed/fp

Version:

Data Structures and Resources for fp-ts

61 lines 1.27 kB
/** * Adapter is based on [@most/adapter](https://github.com/mostjs/adapter), and adds * some fp-ts instances. * @since 0.9.2 */ import * as MA from '@most/adapter'; import * as M from '@most/core'; import { flow, pipe } from 'fp-ts/function'; /** * @since 0.9.2 * @category URI */ export const URI = '@most/adapter'; /** * Apply a stream transformation to an Adapter * @since 0.9.2 * @category Combinator */ export const adapt = (f) => ([send, stream]) => [send, M.multicast(f(stream))]; export function create(f) { const [send, stream] = MA.createAdapter(); return [send, f ? f(stream) : stream]; } /** * @since 0.9.2 * @category Combinator */ export function local(f) { return ([send, stream]) => [flow(f, send), stream]; } /** * @since 0.9.2 * @category Combinator */ export function map(f) { return adapt(M.map(f)); } /** * @since 0.9.2 * @category Combinator */ export const promap = (f, g) => (adapter) => pipe(adapter, local(f), map(g)); export function filter(f) { return adapt(M.filter(f)); } /** * @since 0.9.2 * @category Instance */ export const Functor = { map, }; /** * @since 0.9.2 * @category Instance */ export const Profunctor = { ...Functor, promap, }; //# sourceMappingURL=Adapter.js.map