@@ -1,4 +1,5 @@
1function nativeList(elm) {
1function nativeList(elm) {
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) {
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;
13 return out;
14 return out;
@@ -21,24 +22,24 @@ function nativeList(elm) {
21 return out;
22 return out;
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; }
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;
34 return out;
35 return out;
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;
43 return fromArray(arr);
44 return fromArray(arr);
@@ -46,9 +47,9 @@ function nativeList(elm) {
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;
53 return acc;
54 return acc;
@@ -67,12 +68,12 @@ function nativeList(elm) {
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);
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) {
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);
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;
108 return fromArray(arr);
109 return fromArray(arr);
@@ -111,9 +112,9 @@ function nativeList(elm) {
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;
118 return out;
119 return out;
@@ -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()); }
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;
128 return true;
129 return true;
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;
137 return false;
138 return false;
@@ -140,10 +141,10 @@ function nativeList(elm) {
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;
148 return fromArray(arr);
149 return fromArray(arr);
@@ -152,10 +153,10 @@ function nativeList(elm) {
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;
160 return fromArray(arr);
161 return fromArray(arr);
@@ -167,9 +168,9 @@ function nativeList(elm) {
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;
175 return fromArray(arr);
176 return fromArray(arr);
@@ -177,8 +178,8 @@ function nativeList(elm) {
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;
184 return xs;
185 return xs;