ligo/src/test/contracts/expected/loop.religo.expected

48 lines
993 B
Plaintext
Raw Normal View History

let rec aux_simple = (i: int): int =>
2020-06-08 15:24:36 +02:00
if (i < 100) {
aux_simple(i + 1)
} else {
i
};
2020-06-03 12:41:26 +02:00
2020-06-04 21:36:12 +02:00
let counter_simple = (n: int): int => aux_simple(n);
2020-06-03 12:41:26 +02:00
type sum_aggregator = {counter: int, sum: int };
let counter = (n: int): int => {
let initial: sum_aggregator = {
counter: 0,
sum: 0
2020-06-05 13:56:14 +02:00
};
let rec aggregate = (prev: sum_aggregator): int =>
2020-06-08 15:24:36 +02:00
if (prev.counter <= n) {
2020-06-03 12:41:26 +02:00
aggregate({
counter: prev.counter + 1,
sum: prev.counter + prev.sum
})
2020-06-03 12:41:26 +02:00
} else {
prev.sum
2020-06-03 12:41:26 +02:00
};
aggregate(initial)
};
2020-06-03 12:41:26 +02:00
let rec aux_nest = (prev: sum_aggregator): sum_aggregator =>
2020-06-08 15:24:36 +02:00
if (prev.counter < 100) {
let sum: int = prev.sum + aux_simple(prev.counter);
aux_nest({counter: prev.counter + 1, sum: sum })
} else {
({counter: prev.counter, sum: prev.sum })
};
let counter_nest = (n: int): int => {
let initial: sum_aggregator = {
counter: 0,
sum: 0
2020-06-05 13:56:14 +02:00
};
let out: sum_aggregator = aux_nest(initial);
out.sum
};