updates:)
[cc1516.git] / examples / higher.spl
1 //map(f, l){
2 // if(isEmpty(l)){
3 // return [];
4 // } else {
5 // return f(l.hd) : map(f, l.tl);
6 // }
7 //}
8 //
9 //foldr(f, acc, l){
10 // if(isEmpty(l)){
11 // return acc;
12 // } else {
13 // return foldr(f, f(acc, l.hd), l.tl);
14 // }
15 //}
16 //
17 //filter(f, l){
18 // if(isEmpty(l)){
19 // return [];
20 // } else {
21 // if(f(l.hd)){
22 // return filter(f, l.tl);
23 // } else {
24 // return l.hd : filter(f, l.tl);
25 // }
26 // }
27 //}
28 //
29 //intList(x){
30 // if(x <= 1){
31 // return [x];
32 // } else {
33 // return x : intList(x-1);
34 // }
35 //}
36
37 plus(x, y){
38 return x + y;
39 }
40
41 apply(f, x){
42 return f(x);
43 }
44
45 main(){
46 // print("faculty of 5 is: ", foldr(\x y->x*y, 1, intList(5)));
47 // print("sum of 1..5 is: ", foldr(\x y->x+y, 0, intList(5)));
48 // print("filter evens from 0..12 is: ");
49 // print("sum of 0..12 but only the evens: ",
50 // foldr(\x y->x+y, 0, filter(\x->x%2 == 0, intList(12))));
51
52 var a = plus(3);
53 var b = apply(a);
54 var c = apply(b);
55 var d = apply(c);
56 var e = apply(d);
57 var f = apply(e);
58 var g = apply(f);
59 var h = apply(g);
60 var i = apply(h);
61 var j = apply(i);
62 var k = apply(j);
63 var l = apply(k);
64 var m = apply(l);
65 var n = apply(m);
66 var o = apply(n);
67 var p = apply(o);
68 var q = apply(p);
69 var r = apply(q);
70 var s = apply(r);
71 var t = apply(s);
72 var u = apply(t);
73 var v = apply(u);
74 var w = apply(v);
75 var x = apply(w);
76 var y = apply(x);
77 var z = apply(y);
78
79 print("3+5=", z(5));
80 }