49 lines
943 B
Plaintext
49 lines
943 B
Plaintext
![]() |
/* Test a function which takes another function as an argument */
|
||
|
let foobar = (i: int): int => {
|
||
|
let foo: int => int = (i: int) => i;
|
||
|
|
||
|
let bar: ((int => int) => int) = (f: (int => int)) => f(i);
|
||
|
|
||
|
bar(foo);
|
||
|
};
|
||
|
|
||
|
/* higher order function with more than one argument */
|
||
|
let higher2 = (i: int, f: (int => int)): int => {
|
||
|
let ii: int = f(i);
|
||
|
ii;
|
||
|
};
|
||
|
|
||
|
let foobar2 = (i: int): int => {
|
||
|
let foo2: int => int = (i: int) => i;
|
||
|
|
||
|
higher2(i, foo2);
|
||
|
};
|
||
|
|
||
|
let a: int = 0;
|
||
|
|
||
|
let foobar3 = (i: int): int => {
|
||
|
let foo2: int => int = (i: int) => a + i;
|
||
|
|
||
|
higher2(i, foo2);
|
||
|
};
|
||
|
|
||
|
let f = (i: int): int => i;
|
||
|
|
||
|
let g = (i: int): int => f(i);
|
||
|
|
||
|
let foobar4 = (i: int): int => g(g(i));
|
||
|
|
||
|
let higher3 = (i: int, f: (int => int), g: (int => int)): int => {
|
||
|
let ii: int = f(g(i));
|
||
|
ii;
|
||
|
};
|
||
|
|
||
|
let foobar5 = (i: int): int => {
|
||
|
let a: int = 0;
|
||
|
let foo: int => int = (i: int) => a + i;
|
||
|
|
||
|
let goo: int => int = (i: int) => foo(i);
|
||
|
|
||
|
higher3(i, foo, goo);
|
||
|
};
|