import { Disposable } from '@typed/disposable'
import { curry } from '@typed/lambda'
import { Pure } from './Env'
import { runEnv } from './runEnv'
/**
* Runs a Pure Env with the given callback
* @param f :: (a -> Disposable) Callback for pure Value
* @param pure :: Pure Pure to run
* @returns :: Disposable
*/
export const runPure: {
(f: (value: A) => Disposable, pure: Pure): Disposable
(f: (value: A) => Disposable): (pure: Pure) => Disposable
} = curry(function runPure(f: (value: A) => Disposable, pure: Pure): Disposable {
return runEnv(f, {}, pure)
})