@@ -1,5 +1,7 @@
2 module Native.List where
2 module Native.List where
5(function() {
7(function() {
@@ -65,79 +67,68 @@
65 return out;
67 return out;
68− function map(f) { return function(xs) {
70+ function map(f, xs) {
69 var arr = [];
71 var arr = [];
70 while (xs.ctor === "Cons") {
72 while (xs.ctor === "Cons") {
71 arr.push(f(xs._0));
73 arr.push(f(xs._0));
72 xs = xs._1;
74 xs = xs._1;
74 return fromArray(arr);
76 return fromArray(arr);
78− function foldl(f) { return function(b) { return function(xs) {
79+ function foldl(f, b, xs) {
79− var acc = b;
80+ var acc = b;
80− while (xs.ctor === "Cons") {
81+ while (xs.ctor === "Cons") {
81− acc = f(xs._0)(acc);
82+ acc = f(xs._0)(acc);
82− xs = xs._1;
83+ xs = xs._1;
89− function foldr(f) { return function(b) { return function(xs) {
88+ function foldr(f, b, xs) {
90− var arr = toArray(xs);
89+ var arr = toArray(xs);
91− var acc = b;
90+ var acc = b;
92− for (var i = arr.length; i--; ) {
91+ for (var i = arr.length; i--; ) {
93− acc = f(arr[i])(acc);
92+ acc = f(arr[i])(acc);
100− function foldl1(f) { return function(xs) {
97+ function foldl1(f, xs) {
101− xs.ctor === "Nil" ? throwError('foldl1') : return foldl(f)(xs._0)(xs._1);
98+ xs.ctor === "Nil" ? throwError('foldl1') : return foldl(f, xs._0, xs._1);
105− function foldr1(f) { return function(xs) {
101+ function foldr1(f, xs) {
106 if (xs.ctor === "Nil") { throwError('foldr1'); }
102 if (xs.ctor === "Nil") { throwError('foldr1'); }
107 var arr = toArray(xs);
103 var arr = toArray(xs);
108 var acc = arr.pop();
104 var acc = arr.pop();
109 for (var i = arr.length; i--; ) {
105 for (var i = arr.length; i--; ) {
110− acc = f(arr[i])(acc);
106+ acc = A2(f, arr[i], acc);
112 return acc;
108 return acc;
116− function scanl(f) { return function(b) { return function(xs) {
111+ function scanl(f, b, xs) {
117− var arr = toArray(xs);
112+ var arr = toArray(xs);
118− arr.unshift(b);
113+ arr.unshift(b);
119− var len = arr.length;
114+ var len = arr.length;
120− for (var i = 1; i < len; ++i) {
115+ for (var i = 1; i < len; ++i) {
121− arr[i] = f(arr[i])(arr[i-1]);
116+ arr[i] = A2(f, arr[i], arr[i-1]);
123− return fromArray(arr);
125− }
118+ return fromArray(arr);
128− function scanl1(f) { return function(xs) {
121+ function scanl1(f, xs) {
129− xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f)(xs._0)(xs._1);
122+ xs.ctor === "Nil" ? throwError('scanl1') : return scanl(f, xs._0, xs._1);
133− function filter(pred) { return function(xs) {
125+ function filter(pred, xs) {
134 var arr = [];
126 var arr = [];
135 while (xs.ctor === "Cons") {
127 while (xs.ctor === "Cons") {
136 if (pred(xs._0)) { arr.push(xs._0); }
128 if (pred(xs._0)) { arr.push(xs._0); }
137 xs = xs._1;
129 xs = xs._1;
139 return fromArray(arr);
131 return fromArray(arr);
143 function length(xs) {
134 function length(xs) {
@@ -151,52 +142,47 @@
152 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
143 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
154− function all(pred) { return function(xs) {
145+ function all(pred, xs) {
155 while (xs.ctor === "Cons") {
146 while (xs.ctor === "Cons") {
156 if (!pred(xs._0)) return false;
147 if (!pred(xs._0)) return false;
157 xs = xs._1;
148 xs = xs._1;
159 return true;
150 return true;
163− function any(pred) { return function(xs) {
153+ function any(pred, xs) {
164 while (xs.ctor === "Cons") {
154 while (xs.ctor === "Cons") {
165 if (pred(xs._0)) return true;
155 if (pred(xs._0)) return true;
166 xs = xs._1;
156 xs = xs._1;
168 return false;
158 return false;
172− function zipWith(f) { return function(xs) { return function(ys) {
161+ function zipWith(f, xs, ys) {
173− var arr = [];
162+ var arr = [];
174− while (xs.ctor === "Cons" && ys.ctor === "Cons") {
163+ while (xs.ctor === "Cons" && ys.ctor === "Cons") {
175− arr.push(f(xs._0)(ys._0));
164+ arr.push(A2(f, xs._0, ys._0));
176− xs = xs._1;
165+ xs = xs._1;
177− ys = ys._1;
166+ ys = ys._1;
179− return fromArray(arr);
181− }
168+ return fromArray(arr);
184− function zip(xs) { return function(ys) {
171+ function zip(xs, ys) {
185 var arr = [];
172 var arr = [];
186 while (xs.ctor === "Cons" && ys.ctor === "Cons") {
173 while (xs.ctor === "Cons" && ys.ctor === "Cons") {
187− arr.push(["Tuple2",xs._0,ys._0]);
174+ arr.push({ ctor:'Tuple2', _0:xs._0, _1:ys._0 });
188 xs = xs._1;
175 xs = xs._1;
189 ys = ys._1;
176 ys = ys._1;
191 return fromArray(arr);
178 return fromArray(arr);
195 function sort(xs) {
181 function sort(xs) {
196 return fromArray(toArray(xs).sort(function(a,b) { return a - b}));
182 return fromArray(toArray(xs).sort(function(a,b) { return a - b}));
199− function take(n) { return function(xs) {
185+ function take(n, xs) {
200 var arr = [];
186 var arr = [];
201 while (xs.ctor === "Cons" && n > 0) {
187 while (xs.ctor === "Cons" && n > 0) {
202 arr.push(xs._0);
188 arr.push(xs._0);
@@ -204,16 +190,14 @@
206 return fromArray(arr);
192 return fromArray(arr);
210− function drop(n) { return function(xs) {
195+ function drop(n, xs) {
211 while (xs.ctor === "Cons" && n > 0) {
196 while (xs.ctor === "Cons" && n > 0) {
212 xs = xs._1;
197 xs = xs._1;
215 return xs;
200 return xs;
219 Elm.Native.List = {
203 Elm.Native.List = {
@@ -228,23 +212,25 @@
228 tail:tail,
212 tail:tail,
229 last:last,
213 last:last,
231− map:map,
215+ map:F2(map),
232− foldl:foldl,
216+ foldl:F3(foldl),
233− foldr:foldr,
217+ foldr:F3(foldr),
235− foldl1:foldl1,
219+ foldl1:F2(foldl1),
236− foldr1:foldr1,
220+ foldr1:F2(foldr1),
237− scanl:scanl,
221+ scanl:F3(scanl),
238− scanl1:scanl1,
222+ scanl1:F2(scanl1),
239− filter:filter,
223+ filter:F2(filter),
240 length:length,
224 length:length,
241 reverse:reverse,
225 reverse:reverse,
243− all:all,
227+ all:F2(all),
244− any:any,
228+ any:F2(any),
245− zipWith:zipWith,
229+ zipWith:F3(zipWith),
246− zip:zip,
230+ zip:F2(zip),
247 sort:sort,
231 sort:sort,
248− take:take,
232+ take:F2(take),
249− drop:drop};
233+ drop:F2(drop)