Skip to content

Documentation / @agentick/kernel / compose

Function: compose() ​

Call Signature ​

compose<T1>(p1): Procedure<T1>

Defined in: kernel/src/procedure.ts:1743

Compose multiple procedures into a single procedure (right-to-left execution). This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))

For left-to-right execution, use pipe() instead.

Type Parameters ​

T1 ​

T1 extends (...args) => any

Parameters ​

p1 ​

Procedure<T1>

Returns ​

Procedure<T1>

Example ​

typescript
const format = createProcedure((s: string) => s.toUpperCase());
const validate = createProcedure((s: string) => s.trim());
const parse = createProcedure((input: string) => input);

// compose executes right-to-left: parse -> validate -> format
const pipeline = compose(format, validate, parse);
const result = await pipeline('  hello  '); // "HELLO"

Call Signature ​

compose<T1, T2>(p1, p2): Procedure<(...args) => Promise<ExtractReturn<T1>>>

Defined in: kernel/src/procedure.ts:1744

Compose multiple procedures into a single procedure (right-to-left execution). This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))

For left-to-right execution, use pipe() instead.

Type Parameters ​

T1 ​

T1 extends (arg) => any

T2 ​

T2 extends (...args) => any

Parameters ​

p1 ​

Procedure<T1>

p2 ​

Procedure<T2>

Returns ​

Procedure<(...args) => Promise<ExtractReturn<T1>>>

Example ​

typescript
const format = createProcedure((s: string) => s.toUpperCase());
const validate = createProcedure((s: string) => s.trim());
const parse = createProcedure((input: string) => input);

// compose executes right-to-left: parse -> validate -> format
const pipeline = compose(format, validate, parse);
const result = await pipeline('  hello  '); // "HELLO"

Call Signature ​

compose<T1, T2, T3>(p1, p2, p3): Procedure<(...args) => Promise<ExtractReturn<T1>>>

Defined in: kernel/src/procedure.ts:1751

Compose multiple procedures into a single procedure (right-to-left execution). This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))

For left-to-right execution, use pipe() instead.

Type Parameters ​

T1 ​

T1 extends (arg) => any

T2 ​

T2 extends (arg) => any

T3 ​

T3 extends (...args) => any

Parameters ​

p1 ​

Procedure<T1>

p2 ​

Procedure<T2>

p3 ​

Procedure<T3>

Returns ​

Procedure<(...args) => Promise<ExtractReturn<T1>>>

Example ​

typescript
const format = createProcedure((s: string) => s.toUpperCase());
const validate = createProcedure((s: string) => s.trim());
const parse = createProcedure((input: string) => input);

// compose executes right-to-left: parse -> validate -> format
const pipeline = compose(format, validate, parse);
const result = await pipeline('  hello  '); // "HELLO"

Call Signature ​

compose<T1, T2, T3, T4>(p1, p2, p3, p4): Procedure<(...args) => Promise<ExtractReturn<T1>>>

Defined in: kernel/src/procedure.ts:1760

Compose multiple procedures into a single procedure (right-to-left execution). This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))

For left-to-right execution, use pipe() instead.

Type Parameters ​

T1 ​

T1 extends (arg) => any

T2 ​

T2 extends (arg) => any

T3 ​

T3 extends (arg) => any

T4 ​

T4 extends (...args) => any

Parameters ​

p1 ​

Procedure<T1>

p2 ​

Procedure<T2>

p3 ​

Procedure<T3>

p4 ​

Procedure<T4>

Returns ​

Procedure<(...args) => Promise<ExtractReturn<T1>>>

Example ​

typescript
const format = createProcedure((s: string) => s.toUpperCase());
const validate = createProcedure((s: string) => s.trim());
const parse = createProcedure((input: string) => input);

// compose executes right-to-left: parse -> validate -> format
const pipeline = compose(format, validate, parse);
const result = await pipeline('  hello  '); // "HELLO"

Call Signature ​

compose<T1, T2, T3, T4, T5>(p1, p2, p3, p4, p5): Procedure<(...args) => Promise<ExtractReturn<T1>>>

Defined in: kernel/src/procedure.ts:1771

Compose multiple procedures into a single procedure (right-to-left execution). This is the functional programming convention: compose(a, b, c)(x) = a(b(c(x)))

For left-to-right execution, use pipe() instead.

Type Parameters ​

T1 ​

T1 extends (arg) => any

T2 ​

T2 extends (arg) => any

T3 ​

T3 extends (arg) => any

T4 ​

T4 extends (arg) => any

T5 ​

T5 extends (...args) => any

Parameters ​

p1 ​

Procedure<T1>

p2 ​

Procedure<T2>

p3 ​

Procedure<T3>

p4 ​

Procedure<T4>

p5 ​

Procedure<T5>

Returns ​

Procedure<(...args) => Promise<ExtractReturn<T1>>>

Example ​

typescript
const format = createProcedure((s: string) => s.toUpperCase());
const validate = createProcedure((s: string) => s.trim());
const parse = createProcedure((input: string) => input);

// compose executes right-to-left: parse -> validate -> format
const pipeline = compose(format, validate, parse);
const result = await pipeline('  hello  '); // "HELLO"

Released under the ISC License.