/** * Composable is a structure that allows two algebraic structures to be composed * one into the other. It is a supertype of Combinable but operates on a Kind * instead of a concrete type. * * @module Composable * @since 2.0.0 */ import "./_dnt.polyfills.js"; import type { $, Hold, Kind } from "./kind.js"; /** * 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. * * @since 2.0.0 */ export interface Composable extends Hold { readonly id: () => $; readonly compose: (second: $) => (first: $) => $; }