Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
const parseUserName = flow(
(raw: string) => parseConfig(raw),
map((cfg) => cfg.user),
flatMap((u) => u.name ? ok(u.name) : err({ kind: "missing" })),
);
parseUserName(raw); // Result<string, ParseError | { kind: "missing" }>
Use pipe from @onrails/result when you have a starting value;
use flow when you want to define a reusable composed function.
Variadic point-free composition — left-to-right.
Use pipe from
@onrails/resultwhen you have a starting value; use flow when you want to define a reusable composed function.