import { Disposable } from '@typed/disposable' import { curry } from '@typed/lambda' import { Env } from './Env' import { Resume } from './Resume' export const runEnv = curry( (fn: (value: B) => Disposable, resources: A, env: Env): Disposable => Resume.run(fn, env(resources)), ) as { (fn: (value: B) => Disposable, resources: A, env: Env): Disposable (fn: (value: B) => Disposable, resources: A): (env: Env) => Disposable (fn: (value: B) => Disposable): { (resources: A, env: Env): Disposable (resources: A): (env: Env) => Disposable } }