This commit is contained in:
2022-06-28 17:09:04 +00:00
parent eac74165ae
commit 46becb3b63
2 changed files with 10 additions and 0 deletions

View File

@@ -87,6 +87,7 @@ class Kiss {
// TODO some of these probably won't conflict, and could be passed as functions for a number of reasons // TODO some of these probably won't conflict, and could be passed as functions for a number of reasons
"print" => Symbol("Prelude.print"), "print" => Symbol("Prelude.print"),
"sort" => Symbol("Prelude.sort"), "sort" => Symbol("Prelude.sort"),
"sortBy" => Symbol("Prelude.sortBy"),
"groups" => Symbol("Prelude.groups"), "groups" => Symbol("Prelude.groups"),
"pairs" => Symbol("Prelude.pairs"), "pairs" => Symbol("Prelude.pairs"),
"reverse" => Symbol("Prelude.reverse"), "reverse" => Symbol("Prelude.reverse"),

View File

@@ -196,6 +196,15 @@ class Prelude {
return sorted; return sorted;
} }
public static function sortBy<T,U>(a:Array<T>, index:T->U, ?comp:(U, U) -> Int):kiss.List<T> {
if (comp == null)
comp = Reflect.compare;
return sort(a, (v1, v2) -> {
return comp(index(v1), index(v2));
});
}
public static function groups<T>(a:Array<T>, size, extraHandling = Throw):kiss.List<kiss.List<T>> { public static function groups<T>(a:Array<T>, size, extraHandling = Throw):kiss.List<kiss.List<T>> {
var numFullGroups = Math.floor(a.length / size); var numFullGroups = Math.floor(a.length / size);
var fullGroups = [ var fullGroups = [