Composable
import type { Composable } from "https://github.gh-proxy.cn/raw.githubusercontent.com/baetheus/fun/main/composable.ts";Composable is a structure that allows the composition of two algebraic structures that have in and out fields. It also allows for the initialization of algebraic structures, in effect identity. In other functional libraries this is called a Category.
interface Composable <U extends Kind> extends Hold<U> {
readonly compose: <A = unknown, E = unknown, I = never, J = never, K = never>(second: $<U, [I, J, K], [A], [E]>) => <B = never, C = never, D = unknown>(first: $<U, [A, B, C], [D], [E]>) => $<U, [I, J | B, K | C], [D], [E]>;
readonly id: <A = never, B = never, C = never>() => $<U, [A, B, C], [A], [A]>;
}