summaryrefslogtreecommitdiff
path: root/test.toc
blob: d56944ac105bb8a16628dc3e784bfb0a02a9d766 (plain)
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
io ::= nms {
#include "std/io.toc";
};

LinkedList ::= struct(t::Type) {
   head : t;
   tail : &LinkedList(t);
};

arr_to_ll ::= fn(t::Type, data: []t) l : LinkedList(t) {
	if data.len == 1 {
	   l.head = data[0];
	   l.tail = 0 as &LinkedList(t);
	} else {
		l.head = data[0];
		l.tail = new(LinkedList(t));
		*l.tail = arr_to_ll(t, data[1:]);
	}
};

do_thing ::= fn() int {

	 a := new(int, 3);
	 a[0] = 10;
	 a[1] = 20;
	 a[2] = 30;
	 x := arr_to_ll(int, a);
	 p := &x;
	 i := 0;
	 while p {
	 	 io.puti(p.head);
		 p = p.tail;
		 i += 1;
	 }
	 i
};

main ::= fn() {
	 x ::= do_thing();
	 do_thing();
};