Skip to main content
Module

x/fun/mod.ts>fn.flow

A collection of algebraic data types, lenses, and schemables based on a light weight higher kinded type implementation. Written for deno.
Latest
function fn.flow
import { fn } from "https://deno.land/x/fun@v2.0.0/mod.ts";
const { flow } = fn;

The flow function is like the pipe function without the initial value. It composes up to 9 functions from left to right (top to bottom). The first function can take multiple arguments but every subsequent function must be unary (only take one argument).

Examples

Example 1

import { flow } from "./fn.ts";

const add = (m: number) => (n: number) => m + n;
const multiply = (m: number) => (n: number) => m * n;

const flowed = flow(
  add(1),
  multiply(2),
  add(1),
  multiply(2),
);

const result1 = flowed(1); // 10
const result2 = flowed(2); // 14
const result3 = flowed(3); // 18

Type Parameters

A extends unknown[]
B

Parameters

ab: (...a: A) => B

Returns

(...a: A) => B

Type Parameters

A extends unknown[]
B
C

Parameters

ab: (...a: A) => B
bc: (b: B) => C

Returns

(...a: A) => C

Type Parameters

A extends unknown[]
B
C
D

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D

Returns

(...a: A) => D

Type Parameters

A extends unknown[]
B
C
D
E

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E

Returns

(...a: A) => E

Type Parameters

A extends unknown[]
B
C
D
E
F

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F

Returns

(...a: A) => F

Type Parameters

A extends unknown[]
B
C
D
E
F
G

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G

Returns

(...a: A) => G

Type Parameters

A extends unknown[]
B
C
D
E
F
G
H

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G
gh: (g: G) => H

Returns

(...a: A) => H

Type Parameters

A extends unknown[]
B
C
D
E
F
G
H
I

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G
gh: (g: G) => H
hi: (h: H) => I

Returns

(...a: A) => I

Type Parameters

A extends unknown[]
B
C
D
E
F
G
H
I
J

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G
gh: (g: G) => H
hi: (h: H) => I
ij: (i: I) => J

Returns

(...a: A) => J

Type Parameters

A extends unknown[]
B
C
D
E
F
G
H
I
J
K

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G
gh: (g: G) => H
hi: (h: H) => I
ij: (i: I) => J
jk: (j: J) => K

Returns

(...a: A) => K

Type Parameters

A extends unknown[]
B
C
D
E
F
G
H
I
J
K
L

Parameters

ab: (...a: A) => B
bc: (b: B) => C
cd: (c: C) => D
de: (d: D) => E
ef: (e: E) => F
fg: (f: F) => G
gh: (g: G) => H
hi: (h: H) => I
ij: (i: I) => J
jk: (j: J) => K
kl: (k: K) => L

Returns

(...a: A) => L