/** * @tsplus type Closure */ export interface Closure { readonly Law: { readonly Closure: "Closure" } readonly combine: (x: A, y: A) => A } /** * @tsplus type Closure/Ops */ export interface ClosureOps { (combine: (x: A, y: A) => A): Closure } export const Closure: ClosureOps = (combine: (x: A, y: A) => A): Closure => HKT.instance({ combine })