curry gotcha
[cc1516.git] / test.bak
1 digitToChar(x){
2 x = x % 10;
3 if(x == 0){ return '0'; }
4 else { if(x == 1){ return '1'; }
5 else { if(x == 2){ return '2'; }
6 else { if(x == 3){ return '3'; }
7 else { if(x == 4){ return '4'; }
8 else { if(x == 5){ return '5'; }
9 else { if(x == 6){ return '6'; }
10 else { if(x == 7){ return '7'; }
11 else { if(x == 8){ return '8'; }
12 else { return '9'; }}}}}}}}}
13 }
14
15 printInt (i){
16 if(i > 0){
17 print(digitToChar(i));
18 printInt(i/10);
19 }
20 }
21
22 printIntList (l){
23 print('[');
24 if(!isEmpty(l)){
25 printInt(l.hd);
26 l = l.tl;
27 }
28 while(!isEmpty(l)){
29 print(',');
30 printInt(l.hd);
31 l = l.tl;
32 }
33 print(']');
34 }
35
36 printIntListRP(l){
37 if(!isEmpty(l)){
38 print(',');
39 printInt(l.hd);
40 printIntListRP(l.tl);
41 }
42 }
43
44 printIntListR(l){
45 print('[');
46 if(!isEmpty(l)){
47 printInt(l.hd);
48 l = l.tl;
49 }
50 printIntListRP(l);
51 print(']');
52 }
53
54 map(f, l){
55 if(isEmpty(l)){
56 return [];
57 } else {
58 return f(l.hd) : map(f, l.tl);
59 }
60 }
61
62 plus(x, y){
63 return x + y;
64 }
65
66 main(){
67 //Int
68 Int i1 = 0;
69 Int i2 = 125123;
70 Int i3 = -1;
71
72 //Int expressions
73 Int i4 = i1 + i2 - i3 * i3 / i3;
74
75 //Char
76 Char c1 = ' ';
77 Char c2 = 'a';
78 Char c3 = '\'';
79
80 //Lijsten
81 [Int] l1 = 1 : 2 : 3 : 4 : [];
82 [Int] l2 = 5 : l1;
83
84 printIntList(map(plus(1), l2));
85 // print(i1);
86 // print("should give: 0\n");
87 // print(i2);
88 // print("should give: 125123\n");
89 // print(i3);
90 // print("should give: -1\n");
91 // print(i4);
92 // print("should give: 125124\n");
93 //
94 // print(c2);
95 // print(" should be a\n");
96 // print(c1);
97 // print(" should be literal space\n");
98 // print(c3);
99 // print(" should be '\n");
100 // printIntList(l1);
101 // print("\n");
102 // printIntListR(l2);
103
104 // printIntList(add1List(l2));
105 }
106
107 //
108 //
109 // //Bool
110 // Bool b1 = True;
111 // Bool b2 = False;
112 //
113 // //Simple lists
114 // [Int] sl1 = [];
115 // [Int] sl2 = 1 : sl1;
116 // [Int] sl3 = 1 : sl2;
117 //
118 // //Strings
119 // [Char] s1 = "hallo";
120 // [Char] s2 = "ha\tllo";
121 // [Char] s3 = "";
122 //
123 // //Tuples
124 // (Int, Int) t1 = (42, 0);
125 // (Int, Char) t2 = (42, ' ');
126 // (Bool, Char) t3 = (True, ' ');
127 // ([Char], Char) t4 = ("hi", ' ');
128 // ([Char], (Int, Int)) t5 = ("hi", (42, 0));
129 //
130 // //Lists
131 // [[Char]] l1 = ("hallo") : ("ik") : ("ben") : ("pim") : [];
132 // [Int] l2 = 1 : 2 : 3 : 4 : 5 : [];
133 // [(Int, Int)] l3 = (1, 2) : (2, 3) : (3, 4) : [];
134 //}