aboutsummaryrefslogtreecommitdiff
path: root/examples/learn/32-inferred-calls.zc
diff options
context:
space:
mode:
Diffstat (limited to 'examples/learn/32-inferred-calls.zc')
-rw-r--r--examples/learn/32-inferred-calls.zc25
1 files changed, 25 insertions, 0 deletions
diff --git a/examples/learn/32-inferred-calls.zc b/examples/learn/32-inferred-calls.zc
new file mode 100644
index 0000000..295d007
--- /dev/null
+++ b/examples/learn/32-inferred-calls.zc
@@ -0,0 +1,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);
+}