Brace expansion using ranges: Difference between revisions
→{{header|JavaScript}}: Updated primitives
(Updated and fixed Python in line with new task example.) |
(→{{header|JavaScript}}: Updated primitives) |
||
Line 527:
return 0 < expansions.length ? (() => {
const [parsed, residue] =
expansions[0]▼
);▼
return suffixAdd(
Line 584 ⟶ 582:
];
return tests.map(s => {
.join("\n\t");▼
)▼
.join("\n\n");
};
Line 773 ⟶ 769:
p => Parser(
s => parse(pf)(s).flatMap(
fmapP(
)(
)
);
Line 804 ⟶ 800:
f => Parser(
s => parse(p)(s).flatMap(
)
);
Line 847 ⟶ 843:
p => Parser(
s => parse(p)(s).flatMap(
)
);
Line 855 ⟶ 851:
const item = () =>
// A single character.
Parser(s => {
Tuple(s[0])(▼
return Boolean(h) ?
Tuple(h)(t)
] : [];
});
Line 922 ⟶ 918:
// Any character for which the
// given predicate returns true.
Parser(s => {
test(s[0]) ? [▼
return Boolean(h) ?
] : []
) : [];
});
// sequenceP :: [Parser a] -> Parser [a]
Line 937 ⟶ 935:
s => ps.reduce(
(a, q) => a.flatMap(
first(xs =>
)
),
Line 980 ⟶ 978:
"0": a,
"1": b,
length: 2,
*[Symbol.iterator]() {
for (const k in this) {
if (!isNaN(k)) {
});
// abs :: Num -> Num
Line 1,019 ⟶ 1,025:
// concat :: [[a]] -> [a]
▲ []
) : ""▼
Line 1,059:
// A simple function lifted to one which applies
// to a tuple, transforming only its first item.
Line 1,071 ⟶ 1,069:
(a, b) => op(b, a)
) : (x => y => op(y)(x));
Line 1,109 ⟶ 1,101:
s.padStart(n, c)
) : s;
Line 1,179 ⟶ 1,162:
const reverse = xs =>
xs.slice(0).reverse();
Line 1,202 ⟶ 1,179:
return "number" !== t ? (
(() => {
const [i, mx] = [x, maxBound(x)].map(
▲ );
return i < mx ? (
|