Skip to content

Commit b0462d5

Browse files
committed
♻️ Update
1 parent 7ac2461 commit b0462d5

File tree

5 files changed

+65
-0
lines changed

5 files changed

+65
-0
lines changed

src/language/greater_than.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
export function greaterThan(base: number) {
2+
return (toTest: number) => toTest > base;
3+
}
4+
5+
export function greaterThanOrEqual(base: number) {
6+
return (toTest: number) => toTest >= base;
7+
}
8+
9+
export function greaterThanParameter(toTest: number, base: number) {
10+
if (!greaterThanParameter.checkers.has(base)) {
11+
greaterThanParameter.checkers.set(base, greaterThan(base));
12+
}
13+
14+
const checker = greaterThanParameter.checkers.get(base)!;
15+
16+
return checker(toTest);
17+
}
18+
19+
greaterThanParameter.checkers = new Map<number, (number: number) => boolean>();

src/language/high_order.test.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import {} from "./repeat.ts";
2+
import {} from "./greater_than.ts";
3+
import {} from "./noisy.ts";

src/language/noisy.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// deno-lint-ignore-file no-explicit-any
2+
3+
export function noisy<T extends (...args: any) => any>(
4+
func: T,
5+
{ mute } = { mute: false },
6+
) {
7+
return (...args: Parameters<T>) => {
8+
if (!mute) {
9+
console.log(`Calling "${func.name ?? ""}" with args: ${args}.`);
10+
}
11+
12+
// const result = func(...args);
13+
14+
const result = func.apply(undefined, args);
15+
16+
if (!mute) {
17+
console.log(`Result: ${result}.`);
18+
}
19+
20+
return result as ReturnType<T>;
21+
};
22+
}

src/language/repeat.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
export function repeat<T extends (...args: any) => any>(
2+
times: number,
3+
action: T,
4+
) {
5+
const results = [];
6+
7+
for (let i = 0; i < times; i++) {
8+
const result = action(i);
9+
10+
results.push(result as ReturnType<T>);
11+
}
12+
13+
return results;
14+
}

src/language/unless.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// deno-lint-ignore-file no-explicit-any
2+
3+
export function unless<T extends (...params: any[]) => any>(test: T, then: T) {
4+
if (test()) {
5+
return then() as ReturnType<T>;
6+
}
7+
}

0 commit comments

Comments
 (0)