@@ -1,4 +1,5 @@
11function nativeList(elm) {
2+ "use strict";
23
34 function throwError(f) {
45 throw new Error("Function '" + f + "' expects a non-empty list!");
@@ -6,9 +7,9 @@ function nativeList(elm) {
67
78 function toArray(xs) {
89 var out = [];
9− while (xs[0] === "Cons") {
10− out.push(xs[1]);
11− xs = xs[2];
10+ while (xs.ctor === "Cons") {
11+ out.push(xs._0);
12+ xs = xs._1;
1213 }
1314 return out;
1415 }
@@ -21,24 +22,24 @@ function nativeList(elm) {
2122 return out;
2223 }
2324
24− function head(v) { v[0] === "Nil" ? throwError('head') : return v[1]; }
25− function tail(v) { v[0] === "Nil" ? throwError('tail') : return v[2]; }
25+ function head(v) { v.ctor === "Nil" ? throwError('head') : return v._0; }
26+ function tail(v) { v.ctor === "Nil" ? throwError('tail') : return v._1; }
2627
2728 function last(xs) {
28− if (xs[0] === "Nil") { throwError('last'); }
29− var out = xs[1];
30− while (xs[0] === "Cons") {
31− out = xs[1];
32− xs = xs[2];
29+ if (xs.ctor === "Nil") { throwError('last'); }
30+ var out = xs._0;
31+ while (xs.ctor === "Cons") {
32+ out = xs._0;
33+ xs = xs._1;
3334 }
3435 return out;
3536 }
3637
3738 function map(f) { return function(xs) {
3839 var arr = [];
39− while (xs[0] === "Cons") {
40− arr.push(f(xs[1]));
41− xs = xs[2];
40+ while (xs.ctor === "Cons") {
41+ arr.push(f(xs._0));
42+ xs = xs._1;
4243 }
4344 return fromArray(arr);
4445 }
@@ -46,9 +47,9 @@ function nativeList(elm) {
4647
4748 function foldl(f) { return function(b) { return function(xs) {
4849 var acc = b;
49− while (xs[0] === "Cons") {
50− acc = f(xs[1])(acc);
51− xs = xs[2];
50+ while (xs.ctor === "Cons") {
51+ acc = f(xs._0)(acc);
52+ xs = xs._1;
5253 }
5354 return acc;
5455 }
@@ -67,12 +68,12 @@ function nativeList(elm) {
6768 }
6869
6970 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);
7172 }
7273 }
7374
7475 function foldr1(f) { return function(xs) {
75− if (xs[0] === "Nil") { throwError('foldr1'); }
76+ if (xs.ctor === "Nil") { throwError('foldr1'); }
7677 var arr = toArray(xs);
7778 var acc = arr.pop();
7879 for (var i = arr.length; i--; ) {
@@ -95,15 +96,15 @@ function nativeList(elm) {
9596 }
9697
9798 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);
99100 }
100101 }
101102
102103 function filter(pred) { return function(xs) {
103104 var arr = [];
104− while (xs[0] === "Cons") {
105− if (pred(xs[1])) { arr.push(xs[1]); }
106− xs = xs[2];
105+ while (xs.ctor === "Cons") {
106+ if (pred(xs._0)) { arr.push(xs._0); }
107+ xs = xs._1;
107108 }
108109 return fromArray(arr);
109110 }
@@ -111,9 +112,9 @@ function nativeList(elm) {
111112
112113 function length(xs) {
113114 var out = 0;
114− while (xs[0] === "Cons") {
115+ while (xs.ctor === "Cons") {
115116 out += 1;
116− xs = xs[2];
117+ xs = xs._1;
117118 }
118119 return out;
119120 }
@@ -121,18 +122,18 @@ function nativeList(elm) {
121122 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
122123
123124 function all(pred) { return function(xs) {
124− while (xs[0] === "Cons") {
125− if (!pred(xs[1])) return false;
126− xs = xs[2];
125+ while (xs.ctor === "Cons") {
126+ if (!pred(xs._0)) return false;
127+ xs = xs._1;
127128 }
128129 return true;
129130 }
130131 }
131132
132133 function any(pred) { return function(xs) {
133− while (xs[0] === "Cons") {
134− if (pred(xs[1])) return true;
135− xs = xs[2];
134+ while (xs.ctor === "Cons") {
135+ if (pred(xs._0)) return true;
136+ xs = xs._1;
136137 }
137138 return false;
138139 }
@@ -140,10 +141,10 @@ function nativeList(elm) {
140141
141142 function zipWith(f) { return function(xs) { return function(ys) {
142143 var arr = [];
143− while (xs[0] === "Cons" && ys[0] === "Cons") {
144− arr.push(f(xs[1])(ys[1]));
145− xs = xs[2];
146− ys = ys[2];
144+ while (xs.ctor === "Cons" && ys.ctor === "Cons") {
145+ arr.push(f(xs._0)(ys._0));
146+ xs = xs._1;
147+ ys = ys._1;
147148 }
148149 return fromArray(arr);
149150 }
@@ -152,10 +153,10 @@ function nativeList(elm) {
152153
153154 function zip(xs) { return function(ys) {
154155 var arr = [];
155− while (xs[0] === "Cons" && ys[0] === "Cons") {
156− arr.push(["Tuple2",xs[1],ys[1]]);
157− xs = xs[2];
158− ys = ys[2];
156+ while (xs.ctor === "Cons" && ys.ctor === "Cons") {
157+ arr.push(["Tuple2",xs._0,ys._0]);
158+ xs = xs._1;
159+ ys = ys._1;
159160 }
160161 return fromArray(arr);
161162 }
@@ -167,9 +168,9 @@ function nativeList(elm) {
167168
168169 function take(n) { return function(xs) {
169170 var arr = [];
170− while (xs[0] === "Cons" && n > 0) {
171− arr.push(xs[1]);
172− xs = xs[2];
171+ while (xs.ctor === "Cons" && n > 0) {
172+ arr.push(xs._0);
173+ xs = xs._1;
173174 --n;
174175 }
175176 return fromArray(arr);
@@ -177,8 +178,8 @@ function nativeList(elm) {
177178 }
178179
179180 function drop(n) { return function(xs) {
180− while (xs[0] === "Cons" && n > 0) {
181− xs = xs[2];
181+ while (xs.ctor === "Cons" && n > 0) {
182+ xs = xs._1;
182183 --n;
183184 }
184185 return xs;