import type * as P from "@principia/prelude"; import * as HKT from "@principia/prelude/HKT"; import { succeed } from "./constructors"; import type { Async, URI, V } from "./model"; import { chain_ } from "./monad"; /* * ------------------------------------------- * Functor Async * ------------------------------------------- */ export const map_ = (fa: Async, f: (a: A) => B): Async => chain_(fa, (a) => succeed(f(a))); export const map = (f: (a: A) => B) => (fa: Async): Async => map_(fa, f); export const Functor: P.Functor<[URI], V> = HKT.instance({ map_, map });