aboutsummaryrefslogtreecommitdiff
path: root/examples/learn/32-inferred-calls.zc
blob: 295d0079c97497ccaeb7025a1ef1fb9c54f9ed64 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
namespace;
include rt;

fn layer0(n) { return seed(n); }
fn layer1(n) { return layer0(n); }
fn layer2(n) { return layer1(n); }
int seed(int n) { return n; }
fn countdown(n) {
	if (n == 0) return seed(7);
	return countdown(n - 1);
}
.u make_list(cap) {
	let list = rt.new(cap + 1);
	list[0] = cap;
	return list;
}
.u pass_list(n) {
	let list = make_list(n);
	return list;
}
fn main() {
	let list = pass_list(layer2(41));
	rt.put_n(list[0]); rt.put_c(32);
	rt.put_n(countdown(3)); rt.put_c(10);
}