aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/gleam/list.gleam12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/gleam/list.gleam b/src/gleam/list.gleam
index 96ed75e..ab8b600 100644
--- a/src/gleam/list.gleam
+++ b/src/gleam/list.gleam
@@ -232,19 +232,19 @@ pub fn unique(list) {
}
}
-fn merge_sort(a, b) {
+fn merge_sort(a, b, compare) {
case {a, b} {
| {[], _} -> b
| {_, []} -> a
| {[ax | ar], [bx | br]} ->
- case ax < bx {
- | True -> [ax | merge_sort(ar, b)]
- | False -> [bx | merge_sort(a, br)]
+ case compare(ax, bx) {
+ | order:Lt -> [ax | merge_sort(ar, b, compare)]
+ | _ -> [bx | merge_sort(a, br, compare)]
}
}
}
-pub fn sort(list) {
+pub fn sort(list, compare) {
let list_length = length(list)
case list_length < 2 {
| True -> list
@@ -252,7 +252,7 @@ pub fn sort(list) {
let split_length = list_length / 2
let a_list = take(list, split_length)
let b_list = drop(list, split_length)
- merge_sort(sort(a_list), sort(b_list))
+ merge_sort(sort(a_list, compare), sort(b_list, compare), compare)
}
}