ligo/src/test/contracts/high-order.religo
2019-12-10 13:47:31 +00:00

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);
};