@@ -241,13 +241,14 @@ Elm.Native.List.make = function(elm) {
241 return xs;
241 return xs;
244− function repeat(n, a) {
244+ function repeat(n, x) {
245− var arr = [];
245+ var arr = [];
246− while (n > 0) {
247+ while (n > 0) {
247− arr.push(a);
248+ if (n & 1) arr += pattern;
248− --n;
249+ n >>= 1, pattern += pattern;
250− return fromArray(arr);
251+ return fromArray(arr);
253 function join(sep, xss) {
254 function join(sep, xss) {
@@ -263,61 +264,6 @@ Elm.Native.List.make = function(elm) {
263 return fromArray(out);
264 return fromArray(out);
266− function split(seperator, list) {
267− var array = toArray(list);
268− var alen = array.length;
270− // splitting an empty list is a list of lists: [[]]
271− return Cons(Nil,Nil);
274− var sep = toArray(seperator);
275− var seplen = sep.length;
277− // splitting with an empty sep is a list of all elements
278− // Same as (map (\x -> [x]) list)
280− for (var i = alen; i--; ) {
281− out = Cons(Cons(array[i],Nil), out);
286− var matches = [-seplen];
287− var sepStart = sep[0];
288− var len = alen - seplen + 1;
289− for (var i = 0; i < len; ++i) {
290− if (Utils.eq(array[i], sepStart)) {
292− for (var j = seplen; --j; ) {
293− if (!Utils.eq(array[i+j], sep[j])) { match = false; break; }
302− // shortcut in case of no matches
303− if (matches.length === 0) {
304− return Cons(list,Nil);
308− var index = alen - 1;
309− for (var i = matches.length; i--; ) {
311− var stop = matches[i] + seplen - 1;
312− for ( ; index > stop; --index ) {
313− temp = Cons(array[index], temp);
315− out = Cons(temp,out);
321 Elm.Native.List.values = {
267 Elm.Native.List.values = {
323 Cons:Cons,
269 Cons:Cons,
@@ -355,8 +301,7 @@ Elm.Native.List.make = function(elm) {
355 drop:F2(drop),
301 drop:F2(drop),
356 repeat:F2(repeat),
302 repeat:F2(repeat),
358− join:F2(join),
304+ join:F2(join)
361 return elm.Native.List = Elm.Native.List.values;
306 return elm.Native.List = Elm.Native.List.values;