import { Disposable } from '@typed/disposable' import { unpack } from '@typed/either' import { runPure } from '@typed/env' import { curry } from '@typed/lambda' import { PureFuture } from './Future' export const fork = curry(__fork) as { ( left: (value: A) => Disposable, right: (value: B) => Disposable, future: PureFuture, ): Disposable (left: (value: A) => Disposable, right: (value: B) => Disposable): ( future: PureFuture, ) => Disposable (left: (value: A) => Disposable): { (right: (value: B) => Disposable, future: PureFuture): Disposable (right: (value: B) => Disposable, future: PureFuture): Disposable } } function __fork( left: (value: A) => Disposable, right: (value: B) => Disposable, future: PureFuture, ): Disposable { return runPure(unpack(left, right), future) }