/** * Applicable is a structure that allows a function to be applied inside of the * associated concrete structure. For example, `Option` may hold a value of * `(a: A) => B` inside of it. An Applicable for Option would allow one to * apply the `A` in an `Option` to the function `(a: A) => B` in an * `Option<(a: A) => B>`, resulting in an `Option`. * * @module Applicable * @since 2.0.0 */ import "./_dnt.polyfills.js"; import type { $, Hold, Kind } from "./kind.js"; import type { Combinable } from "./combinable.js"; import type { Mappable } from "./mappable.js"; import type { Wrappable } from "./wrappable.js"; /** * The Applicable interface. This interface includes the methods apply, map, and * wrap. * * @since 2.0.0 */ export interface Applicable extends Mappable, Wrappable, Hold { readonly apply: (ta: $) => (tfai: $ I, J, K], [D], [E]>) => $; } /** * @since 2.0.0 */ export declare function getApplicableCombinable({ apply, map }: Applicable): (combinable: Combinable) => Combinable<$>; /** * Compose two Applicables into a new apply function. * * @since 2.0.0 */ export declare function apply(U: Applicable, V: Applicable): (uva: $, J, K], [L], [M]>) => (uvfai: $ I, B, C], [D], [E]>, J, K], [L], [M]>) => $, J, K], [L], [M]>; /** * @since 2.0.0 */ export declare function applyFirst(U: Applicable): (second: $) => (first: $) => $; /** * @since 2.0.0 */ export declare function applySecond(U: Applicable): (second: $) => (first: $) => $;