@@ -220,11 +220,20 @@ Elm.Native.List.make = function(elm) {
220220 }
221221
222222 function sort(xs) {
223− function cmp(a,b) {
224− var ord = Utils.compare(a,b).ctor;
225− return ord=== 'EQ' ? 0 : ord === 'LT' ? -1 : 1;
226− }
227− return fromArray(toArray(xs).sort(cmp));
223+ return fromArray(toArray(xs).sort(Utils.cmp));
224+ }
225+
226+ function sortBy(f, xs) {
227+ return fromArray(toArray(xs).sort(function(a,b){
228+ return Utils.cmp(f(a), f(b));
229+ }));
230+ }
231+
232+ function sortWith(f, xs) {
233+ return fromArray(toArray(xs).sort(function(a,b){
234+ var ord = f(a)(b).ctor;
235+ return ord === 'EQ' ? 0 : ord === 'LT' ? -1 : 1;
236+ }));
228237 }
229238
230239 function nth(xs, n) {
@@ -312,6 +321,8 @@ Elm.Native.List.make = function(elm) {
312321 zipWith:F3(zipWith),
313322 zip:F2(zip),
314323 sort:sort,
324+ sortBy:F2(sortBy),
325+ sortWith:F2(sortWith),
315326 nth:F2(nth),
316327 take:F2(take),
317328 drop:F2(drop),