import { pipe } from 'fp-ts/function' import * as R from 'fp-ts/Reader' import * as $S from './struct' export const pick = () => (k: K) => R.asks, Pick[K]>($S.lookup(k)) export const picks = () => ( k: K, f: (r: Pick[K]) => R.Reader, B>, ) => picksW()(k, f) export const picksW = () => ( k: K, f: (r: Pick[K]) => R.Reader, ) => pipe(pick()(k), R.chainW(f))