MODULE Free
data
type Free<F, A> = Pure<F, A> | Impure<F, A, any>
<B>(fab: Free<F, (a: A) => B>): Free<F, B>
<B, C>(this: Free<F, (b: B) => C>, fb: Free<F, B>): Free<F, C>
<B>(f: (a: A) => Free<F, B>): Free<F, B>
(): string
(): this is Impure<F, A, any>
(): this is Pure<F, A>
<B>(f: (a: A) => B): Free<F, B>
(): string
function
foldFree<M>(M: Monad<M>): <F, A>(nt: any, fa: Free<F, A>) => HKT<M, A>
function
hoistFree<F, G>(nt: <A>(fa: HKT<F, A>) => HKT<G, A>): (<A>(fa: Free<F, A>) => Free<G, A>)
Use a natural transformation to change the generating type constructor of a free monad
function
<F, A>(fa: HKT<F, A>): Free<F, A>
Lift an impure value described by the generating type constructor F
into the free monad
function
<F, A>(a: A): Free<F, A>