def msort_by
import bend-mathlib@0.8.1.0/perm.bend as Permimport Base
225# Merge sort with fuel (the fuel only bounds recursion; it never affects the permutation).
226def msort_by(~A: Data, ~le: A -> A -> Bool, fuel: Nat, +xs: List<&2, A>) -> List<&2, A>:
227 match fuel:
228 case 0n:
229 xs
230 case 1n++f:
231 merge_by(~A, ~le, msort_by(~A, ~le, f, evens(A, xs)), msort_by(~A, ~le, f, odds(A, xs)))