summaryrefslogtreecommitdiff
path: root/src/core_util.sml
diff options
context:
space:
mode:
Diffstat (limited to 'src/core_util.sml')
-rw-r--r--src/core_util.sml12
1 files changed, 9 insertions, 3 deletions
diff --git a/src/core_util.sml b/src/core_util.sml
index 609152ec..0b1b4a0b 100644
--- a/src/core_util.sml
+++ b/src/core_util.sml
@@ -160,9 +160,15 @@ fun compare ((c1, _), (c2, _)) =
| (CRecord (k1, xvs1), CRecord (k2, xvs2)) =>
join (Kind.compare (k1, k2),
- fn () => joinL (fn ((x1, v1), (x2, v2)) =>
- join (compare (x1, x2),
- fn () => compare (v1, v2))) (xvs1, xvs2))
+ fn () =>
+ let
+ val sort = ListMergeSort.sort (fn ((x1, _), (x2, _)) =>
+ compare (x1, x2) = GREATER)
+ in
+ joinL (fn ((x1, v1), (x2, v2)) =>
+ join (compare (x1, x2),
+ fn () => compare (v1, v2))) (sort xvs1, sort xvs2)
+ end)
| (CRecord _, _) => LESS
| (_, CRecord _) => GREATER