import { Arity1, curry } from '@typed/lambda' import { chain } from './chain' import { Future } from './Future' export const map = curry(__map) as { (fn: Arity1, future: Future): Future (fn: Arity1): (future: Future) => Future } function __map(fn: Arity1, future: Future): Future { return chain((b) => Future.of(fn(b)) as Future, future) as Future }