import { identity } from "../../Function"; import * as L from "./core"; /* * ------------------------------------------- * Monad Layer * ------------------------------------------- */ export const chain_ = ( ma: L.Layer, f: (a: A) => L.Layer ): L.Layer => new L.LayerChainInstruction(ma, f); export const chain = (f: (a: A) => L.Layer) => ( ma: L.Layer ): L.Layer => chain_(ma, f); export const flatten = (mma: L.Layer>): L.Layer => chain_(mma, identity);