@@ -5,7 +5,7 @@ Elm.Native.List = function(elm) {
5 elm.Native = elm.Native || {};
5 elm.Native = elm.Native || {};
6 if (elm.Native.List) return elm.Native.List;
6 if (elm.Native.List) return elm.Native.List;
8− var eq = elm.Native.Utils(elm).eq;
8+ var Utils = elm.Native.Utils(elm);
10 var Nil = { ctor:'Nil' };
10 var Nil = { ctor:'Nil' };
11 function Cons(hd,tl) { return { ctor:"Cons", _0:hd, _1:tl }; }
11 function Cons(hd,tl) { return { ctor:"Cons", _0:hd, _1:tl }; }
@@ -143,13 +143,23 @@ Elm.Native.List = function(elm) {
143 function member(x, xs) {
143 function member(x, xs) {
144 var out = 0;
144 var out = 0;
145 while (xs.ctor === "Cons") {
145 while (xs.ctor === "Cons") {
146− if (eq(x,xs._0)) return true;
146+ if (Utils.eq(x,xs._0)) return true;
147 xs = xs._1;
147 xs = xs._1;
149 return false;
149 return false;
152 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
152 function reverse(xs) { return fromArray(toArray(xs).reverse()); }
154+ function concat(xss) {
155+ if (xss.ctor === 'Nil') return xss;
156+ var arr = toArray(xss);
157+ var xs = arr[arr.length-1];
158+ for (var i = arr.length-1; i--; ) {
159+ xs = append(arr[i], xs);
154 function all(pred, xs) {
164 function all(pred, xs) {
155 while (xs.ctor === "Cons") {
165 while (xs.ctor === "Cons") {
@@ -180,7 +190,7 @@ Elm.Native.List = function(elm) {
180 function zip(xs, ys) {
190 function zip(xs, ys) {
181 var arr = [];
191 var arr = [];
182 while (xs.ctor === "Cons" && ys.ctor === "Cons") {
192 while (xs.ctor === "Cons" && ys.ctor === "Cons") {
183− arr.push({ ctor:'Tuple2', _0:xs._0, _1:ys._0 });
193+ arr.push(Utils.Tuple2(xs._0, ys._0));
184 xs = xs._1;
194 xs = xs._1;
185 ys = ys._1;
195 ys = ys._1;
@@ -188,7 +198,11 @@ Elm.Native.List = function(elm) {
190 function sort(xs) {
200 function sort(xs) {
191− return fromArray(toArray(xs).sort(function(a,b) { return a - b}));
201+ function cmp(a,b) {
202+ var ord = Utils.compare(a,b);
203+ return ord === 'EQ' ? 0 : ord === 'LT' ? -1 : 1;
205+ return fromArray(toArray(xs).sort(cmp));
194 function take(n, xs) {
208 function take(n, xs) {
@@ -233,6 +247,7 @@ Elm.Native.List = function(elm) {
233 length:length,
247 length:length,
234 member:member,
248 member:member,
235 reverse:reverse,
249 reverse:reverse,
237 all:F2(all),
252 all:F2(all),
238 any:F2(any),
253 any:F2(any),