@@ -0,0 +1,482 @@
1+Elm.List = function() {
3+ var throwError = function(f) {
4+ throw new Error("Function '" + f + "' expecting a list!");
9+ while (xs[0] === "Cons") {
15+ var reverse = foldl(function(x_72) {
16+ return function(y_73) {
17+ return["Cons", x_72, y_73]
20+ var concat = foldr(function(x_74) {
21+ return function(y_75) {
22+ return Value.append(x_74, y_75)
25+ var and = foldl(function(x_77) {
26+ return function(y_78) {
30+ var or = foldl(function(x_79) {
31+ return function(y_80) {
35+ var sum = foldl(function(x_89) {
36+ return function(y_90) {
40+ var product = foldl(function(x_91) {
41+ return function(y_92) {
45+ var maximum = foldl1(function(x) { return function(y) { return Math.max(x,y) } });
46+ var minimum = foldl1(function(x) { return function(y) { return Math.min(x,y) } });
48+ if (v[0] !== "Cons") {
49+ throw new Error("Error: 'head' only accepts lists of length greater than one.");
54+ if (v[0] !== "Cons") {
55+ throw new Error("Error: 'tail' only accepts lists of length greater than one.");
60+ if (v[0] !== "Cons") {
61+ throw new Error("Error: 'last' only accepts lists of length greater than one.");
64+ while (v[0] === "Cons") {
71+ return function(xs) {
72+ if (xs[0] === "Nil") { return xs; }
73+ if (xs[0] !== "Cons") { throwError('map'); }
74+ var root = ["Cons", f(xs[1]), ["Nil"]];
77+ while (xs[0]==="Cons") {
78+ curr[2] = ["Cons", f(xs[1]), ["Nil"]];
87+ return function(xs) {
89+ if (xs[0] === "Nil") { return acc; }
90+ if (xs[0] !== "Cons") { throwError('foldl'); }
91+ while (xs[0] === "Cons") {
100+ return function(b) {
101+ return function(xs) {
103+ if (xs[0] === "Nil") { return acc; }
104+ if (xs[0] !== "Cons") { throwError('foldr'); }
106+ while (xs[0] === "Cons") {
110+ for (var i = arr.length; i--; ) {
111+ acc = f(arr[i])(acc);
117+ function foldl1(f_49) {
118+ return function(_temp_50) {
119+ return function(v) {
120+ if("Cons" !== v[0]) {
125+ return foldl(f_49)(x_51)(xs_52)
130+ function foldr1(f) {
131+ return function(xs) {
132+ if (xs[0] === "Nil") { throw new Error("'foldr1' requires an non-empty list.") }
133+ if (xs[0] !== "Cons") { throwError('foldr1'); }
135+ while (xs[0] === "Cons") {
139+ var acc = arr.pop();
140+ for (var i = arr.length; i--; ) {
141+ acc = f(arr[i])(acc);
147+ return function(b) {
148+ return function(xs) {
149+ if (xs[0] === "Nil") { return ["Cons",b,["Nil"]]; }
150+ if (xs[0] !== "Cons") { throwError('scanl'); }
152+ while (xs[0] === "Cons") {
158+ for (var i = arr.length; i--; ) {
159+ out = ["Cons", arr[i], out];
165+ function scanl1(f) {
166+ return function(xs) {
167+ if (xs[0] !== "Cons") {
168+ throw new Error("Error: 'scanl1' requires a list of at least length 1.");
170+ return scanl(f)(xs[1])(xs[2]);
173+ function filter(pred) {
174+ return function(xs) {
175+ if (xs[0] === "Nil") { return xs; }
176+ if (xs[0] !== "Cons") { throwError('filter'); }
178+ while (xs[0] === "Cons") {
179+ if (pred(xs[1])) { arr.push(xs[1]); }
183+ for (var i = arr.length; i--; ) {
184+ out = ["Cons", arr[i], out];
189+ function concatMap(f_76) {
190+ return function(x) {
191+ return concat(map(f_76)(x))
194+ function all(pred) {
195+ return foldl(function(x) { return function(acc) {
196+ return acc && pred(x);
199+ function any(pred) {
200+ return foldl(function(x) { return function(acc) {
201+ return acc || pred(x);
204+ function partition(pred_93) {
205+ return function(lst_94) {
208+ var c = [function(v) {
209+ if("Nil" !== v[0]) {
212+ return["Tuple2", ["Nil"], ["Nil"]]
215+ if("Cons" !== v[0]) {
220+ return function(v) {
221+ if("Tuple2" !== v[0]) {
226+ return pred_93(x_95) ? ["Tuple2", ["Cons", x_95, as_97], bs_98] : ["Tuple2", as_97, ["Cons", x_95, bs_98]]
228+ }(partition(pred_93)(xs_96))
231+ for(var i = c.length;i--;) {
233+ if(r !== undefined) {
240+ function zipWith(f) {
241+ return function(listA) {
242+ return function(listB) {
243+ if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }
244+ if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zipWith'); }
246+ while (listA[0] === "Cons" && listB[0] === "Cons") {
247+ arr.push(f(listA[1])(listB[1]));
252+ for (var i = arr.length; i--; ) {
253+ out = ["Cons", arr[i], out];
259+ function zip(listA) {
260+ return function(listB) {
261+ if (listA[0] === "Nil" || listB[0] === "Nil") { return ["Nil"]; }
262+ if (listA[0] !== "Cons" || listB[0] !== "Cons") { throwError('zip'); }
264+ while (listA[0] === "Cons" && listB[0] === "Cons") {
265+ arr.push(["Tuple2", listA[1], listB[1]]);
270+ for (var i = arr.length; i--; ) {
271+ out = ["Cons", arr[i], out];
276+ function unzip(pairs_112) {
279+ var c = [function(v) {
280+ if("Nil" !== v[0]) {
283+ return["Tuple2", ["Nil"], ["Nil"]]
286+ if("Cons" !== v[0]) {
291+ return function(v) {
292+ if("Tuple2" !== v[0]) {
295+ if("Tuple2" !== v[1][0]) {
298+ var x_115 = v[1][1];
299+ var y_116 = v[1][2];
300+ if("Tuple2" !== v[2][0]) {
303+ var xs_117 = v[2][1];
304+ var ys_118 = v[2][2];
305+ return["Tuple2", ["Cons", x_115, xs_117], ["Cons", y_116, ys_118]]
309+ }(["Tuple2", p_113, unzip(ps_114)])
312+ for(var i = c.length;i--;) {
314+ if(r !== undefined) {
320+ function intersperse(sep_119) {
321+ return function(xs_120) {
324+ var c = [function(v) {
325+ if("Nil" !== v[0]) {
331+ if("Cons" !== v[0]) {
335+ if("Nil" !== v[2][0]) {
338+ return["Cons", a_124, ["Nil"]]
342+ if("Cons" !== v[0]) {
346+ if("Cons" !== v[2][0]) {
349+ var b_122 = v[2][1];
350+ var cs_123 = v[2][2];
351+ return["Cons", a_121, ["Cons", sep_119, intersperse(sep_119)(["Cons", b_122, cs_123])]]
355+ for(var i = c.length;i--;) {
357+ if(r !== undefined) {
364+ function intercalate(sep_125) {
365+ return function(xs_126) {
368+ var c = [function(v) {
369+ if("Nil" !== v[0]) {
375+ if("Cons" !== v[0]) {
379+ if("Nil" !== v[2][0]) {
386+ if("Cons" !== v[0]) {
390+ if("Cons" !== v[2][0]) {
393+ var b_128 = v[2][1];
394+ var cs_129 = v[2][2];
395+ return Value.append(a_127, Value.append(sep_125, intercalate(sep_125)(["Cons", b_128, cs_129])))
399+ for(var i = c.length;i--;) {
401+ if(r !== undefined) {
409+ if (xs[0] === "Nil") { return xs; }
410+ if (xs[0] !== "Cons") { throwError('sort'); }
412+ while (xs[0] === "Cons") {
416+ arr.sort(function(a,b) { return a - b});
418+ for (var i = arr.length; i--; ) {
419+ out = [ "Cons", arr[i], out ];
423+ function take(n) { return function(xs) {
424+ if (n <= 0) { return ["Nil"]; }
425+ if (xs[0] === "Nil") { return xs; }
426+ if (xs[0] !== "Cons") { throwError('take'); }
427+ var out = [ "Cons", xs[1], ["Nil"] ];
431+ while (xs[0] === "Cons" && n > 0) {
432+ temp[2] = [ "Cons", xs[1], ["Nil"] ];
440+ function drop(n) { return function(xs) {
441+ if (xs[0] === "Nil") { return xs; }
442+ if (xs[0] !== "Cons") { throwError('drop'); }
443+ while (xs[0] === "Cons" && n > 0) {
464+ concatMap:concatMap,
473+ partition:partition,
477+ intersperse:intersperse,
478+ intercalate:intercalate,