@@ -223,6 +223,49 @@ Elm.Native.List = function(elm) {
223223 return xs;
224224 }
225225
226+ function join(sep, xss) {
227+ if (xss.ctor === 'Nil') return {ctor:'Nil'}
228+ var s = toArray(sep);
229+ var out = toArray(xss._0);
230+ xss = xss._1;
231+ while (xss.ctor === "Cons") {
232+ out += s + toArray(xss._0);
233+ }
234+ return fromArray(out);
235+ }
236+
237+ function split(sep, xs) {
238+ var out = {ctor:'Nil'};
239+ var array = toArray(xs);
240+ var s = toArray(sep);
241+ var slen = s.length;
242+ if (slen === 0) {
243+ for (var i = array.length; i--; ) {
244+ out = Cons(Cons(array[i],Nil), out);
245+ }
246+ return out;
247+ }
248+ var temp = {ctor:'Nil'};
249+ for (var i = array.length - slen; i >= 0; --i) {
250+ var match = true;
251+ for (var j = slen; j--; ) {
252+ if (!Utils.eq(array[i+j], s[j])) { match = false; break; }
253+ }
254+ if (match) {
255+ out = {ctor:'Cons', _0:temp, _1:out};
256+ temp = {ctor:'Nil'};
257+ i -= slen - 1;
258+ } else {
259+ temp = {ctor:'Cons', _0:array[i+j], _1:temp};
260+ }
261+ }
262+ for (var j = slen-1; j--; ) {
263+ temp = {ctor:'Cons', _0:array[j], _1:temp};
264+ }
265+ out = {ctor:'Cons', _0:temp, _1:out};
266+ return out;
267+ }
268+
226269 return elm.Native.List = {
227270 Nil:Nil,
228271 Cons:Cons,
@@ -255,7 +298,10 @@ Elm.Native.List = function(elm) {
255298 zip:F2(zip),
256299 sort:sort,
257300 take:F2(take),
258− drop:F2(drop)
301+ drop:F2(drop),
302+
303+ join:F2(join),
304+ split:F2(split)
259305 };
260306
261307};