experimenting with high order function application

This commit is contained in:
2023-10-08 19:34:09 +02:00
parent 0a23ff442f
commit f92b7d7480
2 changed files with 86 additions and 0 deletions

View File

@ -28,6 +28,8 @@ declare global {
square(): number[];
sqrt(): number[];
gen(min: number, max: number, times: number): number[];
sometimes(func: Function): number[];
apply(func: Function): number[];
}
}
@ -39,6 +41,18 @@ export const makeArrayExtensions = (api: UserAPI) => {
return this.map((x: number) => x * x);
};
Array.prototype.sometimes = function (func: Function): number[] {
if (api.randomGen() < 0.5) {
return func(this);
} else {
return this;
}
};
Array.prototype.apply = function (func: Function): number[] {
return func(this);
};
Array.prototype.sqrt = function (): number[] {
/**
* @returns New array with square roots of values. Throws if any element is negative.