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
}
}