on master help sign in
Switch to new ADT format
9c105aeevancz
core/Native/Color.js+5−4
@@ -1,8 +1,9 @@
1function nativeColor(elm) {
1function nativeColor(elm) {
2+"use strict";
2
3
3function extract(c) {
4function extract(c) {
4− if (c[4] === 1) { return 'rgb(' + c[1] + ',' + c[2] + ',' + c[3] + ')'; }
5+ if (c._3 === 1) { return 'rgb(' + c._0 + ',' + c._1 + ',' + c._2 + ')'; }
5− return 'rgba(' + c[1] + ',' + c[2] + ',' + c[3] + ',' + c[4] + ')';
6+ return 'rgba(' + c._0 + ',' + c._1 + ',' + c._2 + ',' + c._3 + ')';
6}
7}
7function complement(rgb) {
8function complement(rgb) {
8 var hsv = toHSV(rgb);
9 var hsv = toHSV(rgb);
@@ -12,7 +13,7 @@ function complement(rgb) {
12
13
13function hsva(h) { return function(s) { return function(v) { return function(a) {
14function hsva(h) { return function(s) { return function(v) { return function(a) {
14 var clr = toRGB({hue:h, saturation:s, value:v});
15 var clr = toRGB({hue:h, saturation:s, value:v});
15− clr[4] = a;
16+ clr._3 = a;
16 return clr;
17 return clr;
17 }; }; };
18 }; }; };
18}
19}
@@ -22,7 +23,7 @@ function hsv(h) { return function(s) { return function(v) {
22
23
23function toHSV(rgb) {
24function toHSV(rgb) {
24 var hsv = {};
25 var hsv = {};
25− var r = rgb[1] / 255.0, g = rgb[2] / 255.0, b = rgb[3] / 255.0;
26+ var r = rgb._0 / 255.0, g = rgb._1 / 255.0, b = rgb._2 / 255.0;
26 var M = Math.max(r,g,b);
27 var M = Math.max(r,g,b);
27 var m = Math.min(r,g,b);
28 var m = Math.min(r,g,b);
28 var c = M - m;
29 var c = M - m;
core/Native/List.js+44−43
@@ -1,4 +1,5 @@
1function nativeList(elm) {
1function nativeList(elm) {
2+ "use strict";
2
3
3 function throwError(f) {
4 function throwError(f) {
4 throw new Error("Function '" + f + "' expects a non-empty list!");
5 throw new Error("Function '" + f + "' expects a non-empty list!");
@@ -6,9 +7,9 @@ function nativeList(elm) {
6
7
7 function toArray(xs) {
8 function toArray(xs) {
8 var out = [];
9 var out = [];
9− while (xs[0] === "Cons") {
10+ while (xs.ctor === "Cons") {
10− out.push(xs[1]);
11+ out.push(xs._0);
11− xs = xs[2];
12+ xs = xs._1;
12 }
13 }
13 return out;
14 return out;
14 }
15 }
@@ -21,24 +22,24 @@ function nativeList(elm) {
21 return out;
22 return out;
22 }
23 }
23
24
24− function head(v) { v[0] === "Nil" ? throwError('head') : return v[1]; }
25+ function head(v) { v.ctor === "Nil" ? throwError('head') : return v._0; }
25− function tail(v) { v[0] === "Nil" ? throwError('tail') : return v[2]; }
26+ function tail(v) { v.ctor === "Nil" ? throwError('tail') : return v._1; }
26
27
27 function last(xs) {
28 function last(xs) {
28− if (xs[0] === "Nil") { throwError('last'); }
29+ if (xs.ctor === "Nil") { throwError('last'); }
29− var out = xs[1];
30+ var out = xs._0;
30− while (xs[0] === "Cons") {
31+ while (xs.ctor === "Cons") {
31− out = xs[1];
32+ out = xs._0;
32− xs = xs[2];
33+ xs = xs._1;
33 }
34 }
34 return out;
35 return out;
35 }
36 }
36
37
37 function map(f) { return function(xs) {
38 function map(f) { return function(xs) {
38 var arr = [];
39 var arr = [];
39− while (xs[0] === "Cons") {
40+ while (xs.ctor === "Cons") {
40− arr.push(f(xs[1]));
41+ arr.push(f(xs._0));
41− xs = xs[2];
42+ xs = xs._1;
42 }
43 }
43 return fromArray(arr);
44 return fromArray(arr);
44 }
45 }
@@ -46,9 +47,9 @@ function nativeList(elm) {
46
47
47 function foldl(f) { return function(b) { return function(xs) {
48 function foldl(f) { return function(b) { return function(xs) {
48 var acc = b;
49 var acc = b;
49− while (xs[0] === "Cons") {
50+ while (xs.ctor === "Cons") {
50− acc = f(xs[1])(acc);
51+ acc = f(xs._0)(acc);
51− xs = xs[2];
52+ xs = xs._1;
52 }
53 }
53 return acc;
54 return acc;
54 }
55 }
@@ -67,12 +68,12 @@ function nativeList(elm) {
67 }
68 }
68
69
69 function foldl1(f) { return function(xs) {
70 function foldl1(f) { return function(xs) {
70− xs[0] === "Nil" ? throwError('foldl1') : return foldl(f)(xs[1])(xs[2]);
71+ xs.ctor === "Nil" ? throwError('foldl1') : return foldl(f)(xs._0)(xs._1);
71 }
72 }
72 }
73 }
73
74
74 function foldr1(f) { return function(xs) {
75 function foldr1(f) { return function(xs) {
75− if (xs[0] === "Nil") { throwError('foldr1'); }
76+ if (xs.ctor === "Nil") { throwError('foldr1'); }
76 var arr = toArray(xs);
77 var arr = toArray(xs);
77 var acc = arr.pop();
78 var acc = arr.pop();
78 for (var i = arr.length; i--; ) {
79 for (var i = arr.length; i--; ) {
@@ -95,15 +96,15 @@ function nativeList(elm) {
95 }
96 }
96
97
97 function scanl1(f) { return function(xs) {
98 function scanl1(f) { return function(xs) {
98− xs[0] === "Nil" ? throwError('scanl1') : return scanl(f)(xs[1])(xs[2]);
99+ xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f)(xs._0)(xs._1);
99 }
100 }
100 }
101 }
101
102
102 function filter(pred) { return function(xs) {
103 function filter(pred) { return function(xs) {
103 var arr = [];
104 var arr = [];
104− while (xs[0] === "Cons") {
105+ while (xs.ctor === "Cons") {
105− if (pred(xs[1])) { arr.push(xs[1]); }
106+ if (pred(xs._0)) { arr.push(xs._0); }
106− xs = xs[2];
107+ xs = xs._1;
107 }
108 }
108 return fromArray(arr);
109 return fromArray(arr);
109 }
110 }
@@ -111,9 +112,9 @@ function nativeList(elm) {
111
112
112 function length(xs) {
113 function length(xs) {
113 var out = 0;
114 var out = 0;
114− while (xs[0] === "Cons") {
115+ while (xs.ctor === "Cons") {
115 out += 1;
116 out += 1;
116− xs = xs[2];
117+ xs = xs._1;
117 }
118 }
118 return out;
119 return out;
119 }
120 }
@@ -121,18 +122,18 @@ function nativeList(elm) {
121 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
122 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
122
123
123 function all(pred) { return function(xs) {
124 function all(pred) { return function(xs) {
124− while (xs[0] === "Cons") {
125+ while (xs.ctor === "Cons") {
125− if (!pred(xs[1])) return false;
126+ if (!pred(xs._0)) return false;
126− xs = xs[2];
127+ xs = xs._1;
127 }
128 }
128 return true;
129 return true;
129 }
130 }
130 }
131 }
131
132
132 function any(pred) { return function(xs) {
133 function any(pred) { return function(xs) {
133− while (xs[0] === "Cons") {
134+ while (xs.ctor === "Cons") {
134− if (pred(xs[1])) return true;
135+ if (pred(xs._0)) return true;
135− xs = xs[2];
136+ xs = xs._1;
136 }
137 }
137 return false;
138 return false;
138 }
139 }
@@ -140,10 +141,10 @@ function nativeList(elm) {
140
141
141 function zipWith(f) { return function(xs) { return function(ys) {
142 function zipWith(f) { return function(xs) { return function(ys) {
142 var arr = [];
143 var arr = [];
143− while (xs[0] === "Cons" && ys[0] === "Cons") {
144+ while (xs.ctor === "Cons" && ys.ctor === "Cons") {
144− arr.push(f(xs[1])(ys[1]));
145+ arr.push(f(xs._0)(ys._0));
145− xs = xs[2];
146+ xs = xs._1;
146− ys = ys[2];
147+ ys = ys._1;
147 }
148 }
148 return fromArray(arr);
149 return fromArray(arr);
149 }
150 }
@@ -152,10 +153,10 @@ function nativeList(elm) {
152
153
153 function zip(xs) { return function(ys) {
154 function zip(xs) { return function(ys) {
154 var arr = [];
155 var arr = [];
155− while (xs[0] === "Cons" && ys[0] === "Cons") {
156+ while (xs.ctor === "Cons" && ys.ctor === "Cons") {
156− arr.push(["Tuple2",xs[1],ys[1]]);
157+ arr.push(["Tuple2",xs._0,ys._0]);
157− xs = xs[2];
158+ xs = xs._1;
158− ys = ys[2];
159+ ys = ys._1;
159 }
160 }
160 return fromArray(arr);
161 return fromArray(arr);
161 }
162 }
@@ -167,9 +168,9 @@ function nativeList(elm) {
167
168
168 function take(n) { return function(xs) {
169 function take(n) { return function(xs) {
169 var arr = [];
170 var arr = [];
170− while (xs[0] === "Cons" && n > 0) {
171+ while (xs.ctor === "Cons" && n > 0) {
171− arr.push(xs[1]);
172+ arr.push(xs._0);
172− xs = xs[2];
173+ xs = xs._1;
173 --n;
174 --n;
174 }
175 }
175 return fromArray(arr);
176 return fromArray(arr);
@@ -177,8 +178,8 @@ function nativeList(elm) {
177 }
178 }
178
179
179 function drop(n) { return function(xs) {
180 function drop(n) { return function(xs) {
180− while (xs[0] === "Cons" && n > 0) {
181+ while (xs.ctor === "Cons" && n > 0) {
181− xs = xs[2];
182+ xs = xs._1;
182 --n;
183 --n;
183 }
184 }
184 return xs;
185 return xs;